1.
2. 代码当中体现多态性,父类对象指向引用子类对象;
3.
格式:
父类名称 对象名 = new 子类名称();
或者
接口名称 对象名 = new 实现类名称();
4.访问成员变量的两种方式:
(1)直接通过对象名称访问成员变量:看等号左边是谁,优先有谁,没有就向上找。
(2)间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。
5.子类如果没有覆盖重写就是父类
覆盖重写了则是子类。
6.在多态代码中,成员方法的访问规则是:
看new的是谁就是优先用谁,没有则向上找。
口诀:编译看左,运行看右。
对比一下:
成员变量:编译看左,运行还是看左。
成员方法:编译看左,运行看右。
父子都有,优先用子;
子类没有,父类有,则向上找。
7.
多态的好处:
无论右边new的时候换成哪个子类的对象,等号左边的方法都不会变。
8.
9.
10.
final
11.
当一个final关键字用来修饰一个类的时候,格式:
public final class 类名称 {
//......
}
12.当前这个类不能有任何子类,(太监类)
注意:当一个类是final的,那么其中所有的成员方法都不能进行覆盖重写(因为没有儿子)
13.当final关键字来修饰一个方法的时候,这个方法是最终方法,也就是不能被覆盖重写。
格式:
修饰符 final 返回值类型 方法名称 (参数列表) {
//.....
}
注意事项:对于类和方法来说,abstract和final不能同时使用,会矛盾。abstract一定要进行重写,final不能进行重写。
14.final用来修饰一个局部变量,地址值不可变,但是里面的方法内容可以变。
15.对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样不可变,
(1)由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值了。
(2)对于final的成员变量,要么直接使用赋值,要么通过构造方法赋值,二者选一。
(3)必须保证所有类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。
16.