1.java中,所有类都有一个父类Object,没有定义属性,但定义了一些方法
2.使用extends关键字表示继承关系
3.用@Override可重写父类方法
4.super关键字用于指代父类,可用于调用父类的构造方法,访问父类方法和变量
super和this区别:this引用一个对象是实实在在存在的,可以作为函数参数,返回值,super只是一个关键字
告诉编译器怎么做。
5.子类对象赋值给父类引用变量,叫向上转型
6.概念:多态,动态类型,静态类型,动态绑定,静态绑定
7.子类可以重写父类非private的方法,当调用的时候会动态绑定,执行子类的方法,因此,不应在父类的构造方法中调用可被子类重写的方法,只应调用private的方法
8.动态绑定的机制就是根据对象的实际类型查找要执行的方法,子类型中找不到的时候再查找父类
9. 重名与静态绑定:
private变量和方法重名无所谓
public变量和方法视访问而定:
在类内,访问的是当前类的,类外访问的要看静态类型
静态绑定在程序编译阶段即可决定,动态绑定要等到程序运行时,
实例变量,静态变量,静态方法,private方法都是静态绑定的
10. 重载和重写
重载指方法名称相同但参数签名不同(参数个数,类型,顺序)。
当有多个重名函数时,首先按照参数类型进行匹配,再看动态类型
11. 父子类型转换
一个父类转化为子类取决于父类的动态类型(引用的对象类型)是不是子类或子类的子类。
可以通过instanceof关键字(boolean)
变量 instanceof 类型
12. 继承访问权限protected
protected可被子类访问,还可被同一个包中的其他类访问。模板方法
13. 可见性重写
子类重写方法时不能降低父类方法的可见性
14 防止继承 final
public final class Base
加上final关键字后就不可继承