视频加载中...
1.抽象类1.1.抽象类的概念
1.1.1.抽象的产生
需求:创建类描述猫和狗;
猫:颜色;名字;品种; 吃;叫;抓老鼠;
狗:颜色;名字;品种; 吃;叫;看家;
老的实现方式:
//创建类描述狗
classDog{
privateStringcolor;//颜色
privateStringname;//name
privateStringpinZhong;//品种
publicDog() {}
publicDog(Stringcolor, Stringname, StringpinZhong) {
this.color=color;
this.name=name;
this.pinZhong=pinZhong;
}
publicString getColor() {
return color;
}
public voidsetColor(Stringcolor) {
this.color=color;
}
publicString getName() {
return name;
}
public voidsetName(Stringname) {
this.name=name;
}
publicString getPinZhong() {
return pinZhong;
}
public voidsetPinZhong(StringpinZhong) {
this.pinZhong=pinZhong;
}
//吃
public voideat() {
System.out.println("吃骨头!");
}
//叫
public voidsay() {
System.out.println("汪汪");
}
//看家
public voidlookHome() {
System.out.println("看家");
}
}
//创建类描述猫
classCat{
privateStringcolor;//颜色
privateStringname;//名字
privateStringpinZhong;//品种
publicCat() {}
publicCat(Stringcolor, Stringname, StringpinZhong) {
this.color=color;
this.name=name;
this.pinZhong=pinZhong;
}
publicString getColor() {
return color;
}
public voidsetColor(Stringcolor) {
this.color=color;
}
publicString getName() {
return name;
}
public voidsetName(Stringname) {
this.name=name;
}
publicString getPinZhong() {
return pinZhong;
}
public voidsetPinZhong(StringpinZhong) {
this.pinZhong=pinZhong;
}
//猫的吃
public voideat() {
System.out.println("吃小鱼!");
}
//猫的叫
public voidsay() {
System.out.println("喵喵喵");
}
//抓老鼠
public voidcatchMouse() {
System.out.println("抓老鼠");
}
}
思考:这两个类中存在大量相同代码,每个类都要重新书写一遍,太麻烦 。可以考虑使用继承技术来简化代码;
因为猫和狗之间没有 是 的关系,所以不能相互继承;
所以要找一个共同的父类,将猫和狗的共同代码都抽取到父类中;
因为猫和狗都 是 动物,所以可以定义一个动物类,将相同代码抽取到动物类中,然后让猫和狗都继承这个动物类;
/*
*需求:创建类描述猫和狗;
猫:颜色;名字;品种; 吃;叫;抓老鼠;
狗:颜色;名字;品种; 吃;叫;看家;
*/
//创建一个共同的父类动物
abstract classAnimal{
【Java中抽象类的存在有什么意义 为什么要有抽象类】privateStringcolor;//颜色
privateStringname;//name
privateStringpinZhong;//品种
publicAnimal() {}
publicAnimal(Stringcolor, Stringname, StringpinZhong) {
this.color=color;
this.name=name;
this.pinZhong=pinZhong;
}
publicString getColor() {
return color;
}
public voidsetColor(Stringcolor) {
this.color=color;
}
publicString getName() {
return name;
}
public voidsetName(Stringname) {
this.name=name;
}
publicString getPinZhong() {
return pinZhong;
}
public voidsetPinZhong(StringpinZhong) {
this.pinZhong=pinZhong;
}
//吃
public abstract voideat();
//叫
public abstract voidsay();
}
//创建类描述狗
classDogextendsAnimal{
publicDog() {}
publicDog(Stringcolor, Stringname, StringpinZhong) {
super(color,name,pinZhong);
}
//吃
public voideat() {
System.out.println("吃骨头!");
}
//叫
public voidsay() {
System.out.println("汪汪");
}
//看家
public voidlookHome() {
System.out.println("看家");
}
}
//创建类描述猫
classCatextendsAnimal{
publicCat() {}
publicCat(Stringcolor, Stringname, StringpinZhong) {
super(color,name,pinZhong);
}
//猫的吃
public voideat() {
System.out.println("吃小鱼!");
}
//猫的叫
public voidsay() {
System.out.println("喵喵喵");
}
//抓老鼠
public voidcatchMouse() {
System.out.println("抓老鼠");
}
}
新的问题:
在不同的子类中有相同的方法,但是方法的具体实现不同;因为是相同的方法,是共有的功能,所以应该抽取到共同的父类中;
- 凤凰传奇的曾毅,真的太大意了!9月21日中秋节,玲花刚把蛋黄馅的月饼掰开
- 八字中食神是什么意思
- 工作中能够实事求是的生肖,工作中能够实事求是的三大生肖
- 寻找中国福娃 中国福娃
- 陈酒越老越好吗?陈酒好喝吗?
- 葡萄酒在日常生活中的小用处
- 家中忌讳摆放的东西-家居风水
- 加盟红酒行业前景怎么样 红酒加盟中国十大排名
- 中风葡萄糖高 中风老人能喝葡萄酒吗
- 中指和食指夹缝里有痣代表什么