继承
如果子类有,优先访问子类的,子类没有,然后去看父类有没有,父类也没有,那就会报错。
就是要访问父类怎么办?通过super关键字。
在静态方法当中,时不能使用this和super的。
当子类继承了父类后,在实例化子类对象的时候,要帮助父类进行构造(初始化父类的成员)。
怎么初始化?
初始化父类成员的时候,只有一种方法:调用构造方法。
父类没有任何构造方法,那么有一个默认的不带参数的构造方法,相反,如果父类有构造方法,子类必须调用那个存在的构造方法 。
再谈初始化
1.父类和子类的静态先执行
2.父类的实例,父类的构造方法
3.子类的实例,子类的构造方法
4.静态的只执行一次
protected关键字
不管是不是同包,只要是子类就行(建立的前提是:继承的这个类他是public修饰的)。
Java中不支持多继承
如果需要控制继承,此时这个类可以被final修饰,意味着:当前类不可以被继承,此时在这个类叫做密封类。
向上转型:
通过父类引用访问的时候,只能访问父类自己特有的。
方法重写:
1.方法名相同
2.参数列表相同(个数 顺序 类型)
3.方法的返回值相同
动态绑定的前提:
1.父类引用子类对象【向上转型】
2.通过父类引用调用重写的方法
总结:
1.静态方法不能被重写
2.被private修饰的方法不能被重写
3.被final修饰的方法不能被重写
4.如果方法被重写,那么子类的访问权限要大于等于父类的权限。
发生父类转型的时机:
1.方法传参
2.作为返回值
3.直接赋值
多态
当引用的对象不一样,调用方法表现的行为不一样,此时就叫做多态,因为同一个引用调用同一个方法,表现的行为不一样。