2. 继承、多态
一、继承
1.什么是继承?
- 继承时用来提高代码的复用性
- 将相同的功能模块封装到方法中需要使用时调用方法达到代码复用性的目的。
2.如何实现继承?
使用关键字extends实现 ,class B extends A,B类继承于A类。如果一个类没有显示的继承其他类时,该类默认继承于Object类。在java中只有直接父类和间接父类关系,没有兄弟关系。Java的继承都是单继承,实现可为多实现。
3.子类继承父类那些?
- 被private修饰的,是不可以被继承的,因为private修饰的表示只在本类可见,子类是不可见的。被public和protected修饰的可以被子类继承,被默认修饰符修饰的只能在同包下继承。
- 不能继承父类的构造方法
- 被static修饰的不能继承
- 子类是不继承父类的static变量和方法的。因为这是属于类本身的。但是子类是可以访问的。
- 子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系。
二、多态
1.多态的前提
- 父类的引用指向了子类对象
- 由继承关系
- 方法重写
2.方法重写和方法重载
2.1 方法重写
子类重写从父类中继承来的方法,遵守两小两同一大原则。
- 方法名相同
- 参数列表相同
- 方法返回值更小或相同
- 方法抛出异常类型更小或相同
- 方法修饰符更大或相同
2.2 方法重载
同一个类中,两个方法名相同但是参数列表不同的方法即为方法重载。
3、多态类型
运行时多态:方法重写
编译时多态:方法重载
4、多态内的this和super
this:代表当前最新对象
super:代表父类