一、super的使用
在父类中,如果出现有参构造方法,则养成习惯加上无参构造方法。
二、多态——可以通过继承类和实现接口
Person p = new Student();
p.study();//方法
p.name;//字段
1、非静态方法
在编译的时候,程序首先检查父类Person中是否有该方法,如果没有则会继续向上查找Person的父类中是否包含该方法,查完还没,则会报错。运行时,先从子类Student中调用study()方式,如果没有,则查找其父类是否有该方法,依次向上直至结束,没有则报错。
此处需注意在使用多态方式创建的对象,调用父类没有的方法,会报错。
2、静态方法
父类中的静态方法是不会被覆写的,即使子类和父类有同名静态方法,如果使用多态方式进行调用,只会调用父类方法。
3、字段
如果子类有和父类同名的字段,在直接调用时,只会取父类的值
4、解决父类没有,或只使用子类字段和方法
采用强转,在使用强制转换时,一定要先用instanceof进行判断。
Student stu = (Student)p;
三、instanceof
只能用于引用类型
A instanceof B,A 是对象变量,B是接口或者类,只要A运行时类型是B或者是B的子类,其结果都为true。
引出:Object中有个getClass()方法,该方法会直接获取运行时类型,而非编译时(多态情况下)。
四、final
1、修饰类,表示该类不能被继承,无子类,如String、Integer。
2、修饰方法,表示该方法不能被覆写,但不能用于构造方法。
不能被覆写的方法:
使用private、static、final修饰的方法
3、修饰变量,表示最终变量,一旦第一次有值,则不能再改变,一般用于全局常量(public static final)。