继承:通过extends体现的。
继承要注意的事项:
- 不要为减少重复代码而去继承,只有真正存在的继承关系的时候才去继承。
- 父类私有的成员不能被继承,父类的构造函数也不能被继承。
- 创建子类对象时会先调用父类无参的构造函数。
为什么创建子类要先创建父类?意义何在?
调用父类的构造方法,可以初始化父类继承下去的那些属性。
super关键字
super关键字代表了父类空间的引用。
super关键字的作用:
- 子父类存在着同名的成员时,在子类默认是访问子类的成员,可以通过super关键字访问父类指定成员。
- 创建子类对象时,默认会先调用父类的无参的构造方法,可以通过super关键字指定调用父类的构造方法。
super关键字调用父类构造方法要注意的事项:
- 如果子类调用父类时没写super(),编译器会自动调用无参的构造函数。
- 而且需要在子类的第一句中写。
- super和this不能同时出现在同一个构造函数中调用其他的构造函数,因为两个语句都需要第一个语句。
super与this的区别:
- 代表的失误不一致。
1. super关键字代表的是父类空间的引用。
2. this关键字代表的是所属函数的调用者对象。 - 使用前提不一致。
1. super关键字必须要有继承关系。
2. this关键字不需要存在继承关系。 - 调用构造函数的区别
1. super关键字是调用父类的构造函数。
2. this关键字是调用本类的构造函数。
重写与重载
当父类的功能无法满足子类的需求时需要重写方法。
方法重写的前提:必须存在继承关系。
方法的重写:子父类出了同名的函数,这个我们就称作为方法的重写。
方法的重载:在一个类中,存在两个或者两个以上的同名函数,称作方法重载。
方法重写的注意事项:
- 方法重写时,方法名与形参列表必须一致。
- 方法重写时,子类的权限修饰符必须大于或等于父类的权限修饰符。
- 方法重写时,子类的返回值类型表示范围(Fish)必须小于或等于父类返回值类型的范围(Animal)。
- 方法重写时,子类抛出的异常类型要小于或者等于父类抛出的异常类型。
✔
Exception(最坏)--------------------->父类
RuntimeException(小坏)---------->子类
✖
Exception(最坏)--------------------->子类
RuntimeException(小坏)---------->父类
方法重载的要求:
- 函数名相同
- 形参列表不同(形参个数,形参的类型)
- 与返回值类型无关。
instanceof关键字的作用:判断一个对象是否属于指定的类别。
使用前提:
判断对象与指定的类别必须要存在继承或者实现的关系。
使用格式:
对象 instanceof 类别 如:狗 instanceof 动物 ✔,动物 instanceof 狗 ✖