1.覆写
1.1 覆写
覆写 Override :子类对父类的方法进行覆写。一定要有继承关系。
方法名,参数列表,返回值都必须相同。
不能比原方法有更低的访问权限。
不能比原方法有更宽泛的异常。
1.2 覆写和重写的区别
重写 Overload 是方法重载,方法名相同但是参数列表不同。
1.3 注解Override
@Override 是覆写的注解,是一个源码注解,不会出现在编译后的字节码文件中。所以可写可不写,但是可以作为提醒机制,如果加上注解后覆写条件有误就会提醒报错。
2.final
2.1 final
final 修饰的类,不能被继承。
final 修饰的成员方法,不能被覆写。
final 修饰的变量,不能二次赋值,没有默认值,因此必须显式赋值。
final 修饰引用类型变量,变量值不可以变,但是变量指向的对象中的值如果没有 final 修饰是可以修改的。
2.2 被final修饰的类不能被继承的原因
子类实例化的时候,构造方法中是要调用父类的构造方法的。而一个类被 final 修饰后,类的构造方法无法被子类的 super() 访问到,因此无法继承。
2.3 final修饰引用类型
final 修饰引用类型变量,变量值不可以变,但是变量指向的对象中的值如果没有 final 修饰是可以修改的。
3.多态
3.1 多态
多态:父类引用指向子类对象。
多态又叫向上转型,由子类到父类,类似于自动类型转换。
向下转型,由父类到子类,但是需要注意:必须先发生向上转型,然后才能发生向下转型。
里氏替换原则:能使用父类的地方,一定可以使用子类。
使用多态时,编译看父类,运行看子类。即要看父类有没有这个变量或者方法,有这个变量或者方法才可以调用,调用时如果子类覆写了父类的成员方法,那么调用子类的成员方法,对于非成员方法,都调用父类的。
3.2 Instanceof
可以判断某个对象是否由某个类实例化而来。
格式:objName instanceof className;
。
如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤