Java面向对象特征:封装、继承、多态
继承 extends
先说类和类之间的关系,有两种,一种是组合关系,一种是继承关系:
- 组合关系是 “有一个” 的关系,例如某一个对象中包含了另一个对象;
- 继承关系是 “是一个” 的关系,例如学生和老师是不同对象,但他们都是人这个对象,香蕉和苹果都是水果,等等。
继承关系出现的原因是某几个对象的属性值几乎完全一样,此时为了减少代码重复,可以利用继承关系设置父类和子类(即基类和派生类)。例如,可以将学生和老师均归为People类,此时People类为父类(基类),Student 和 Teacher 类为子类(派生类)。
- 子类继承父类的所有属性和行为(但是否继承成功取决与父类的修饰符,因此,父类修饰符一般为 public )
- 子类无法继承父类的构造函数
另外,Object 是所有类的根基类,所有类默认继承 object 类。
当子类的行为与父类的行为不同时,此时就要进行函数方法重写:@Override
函数方法重写:
1、 首先,非常重要的一点,必须存在继承关系。
2、 子类重新实现父类的方法
原则:
-
2.1 函数名相同,参数列表也相同
-
2.2 子类方法修饰符权限必须大于父类方法
函数重写的实现原理:
子类方法的实现将从父类继承下来的方法实现进行了地址覆盖
函数重写应满足的条件
1、 派生类中该方法的返回值和基类同名方法的返回值相同,参数列表相同。
2、 派生类中的重写方法的访问权限不能比基类小。权限的顺序为:public,protected,private。
3、 基类的 abstract 方法必须被派生类重写,否则派生类也必须是 abstract
4、 基类的 final 方法不能