- 2-1-1 需求重定义
- 2-1-2 继承
- 2-2-2 饿狼传说之多层继承
- 2-2-3 方法的重写
- 2-2-4 super啃老
- 2-2-5 啃老啃到彻底
- 2-2-6 final
- 2-2-7 提出新的问题
- 2-3-1 抽象与具体——抽象类的衍生
- 2-3-2 抽象方法和抽象类的使用
- 2-3-3 接口
- 2-3-4 class和interface的区别哲学气息
- 2-4.1 多态——花木兰替父从军
- 2-4-2 匿名内部类
- 3-1-1 权限修饰符
- 3-1-2 Object
人们养宠物会有很多的选择,除开狗以外还会有猫、老鼠、熊、猪等等等。那这个时候我们的宠物系统
要如何维护呢?
根据问题提出概念:继承
或许我们会有许多方法去维护这个,但是你会发现你会写上许多重复的代码。但是有没有一个办法可以
将这些重复的代码进行一个归类和总结呢?
显然是可以的,这个时候我们就会用到继承。
什么是继承?泛指把前人的作风、文化、知识等接受过来。
那这个时候我们把重复的代码放在一块,然后让其他的宠物接受过来,这也是一种继承。我可以创造一
个类叫宠物或者动物,这样其他的宠物都可以在这个类中继承他们相同的地方。
继承的关键词是 extends
在上述代码中我们把原来属于Dog的内容转移到了Pet中,使用 extends ,最后在主函数中还是可以看
到我们可以和以前一样使用,并且 Cat在继承Pet以后也可以像狗一样实践,这样就使得我们的代码的复
用性很强,也符合了大众化。
多层继承 灰太狼家族
就是一层一层的继承,爷爷到爸爸、爸爸到孙子这种
public class Dogs extends Animal{
}
public class Labrador extends Dogs {
}
一个类不能直接继承多个类,java是单继承语言。
比如说这样:class A extends B,C 不能这样写,因为java不支持多继承。
但是可以像下面这样实现继承多个类:class A extends B,class C extends A,这样C就同时继承了B和A两个类了。
在类继承了另外一类,但是对一些方法需要进行修改的时候就需要用到方法的重写。
比如动物吃东西
@Override
public void breaking() {
super.breaking();
// System.out.println("喵喵");
}
@Override
public void breaking() {
// super.breaking();
System.out.println("汪汪");
}
动物叫,这是它自己拥有的特性,是他自己写的,不是来自它爸的,它从它爸爸那革新了
子类自己认为,应该打破它父亲的传统,进行革新,革新的内容就是方法体
super 这个函数是继承原来的,如果要改写就需要将这个注释掉
重载与重写override的区别
引用父类的方法
2-2-5 啃老啃到彻底构造方法的重写
继承无法继承父类的构造函数,所以还需要重写构造方法,这样才可以进行对象的初始化
public Animal(String name, String variety, int age, String food) {
this.name = name;
this.variety = variety;
this.age = age;
this.food = food;
}
public Animal() {
}
public Cat(String name, String variety, int age, String food) {
super(name, variety, age, food);
}
public Cat() {
}
}
public Dogs(String name, String variety, int age, String food) {
super(name, variety, age, food);
}
public Dogs() {
}
}
2-2-6 final
用final定义的类不能再被继承
用fianl定义的方法不能再被重写
用final定义的变量是常量不能再被修改



