Java面向对象的三大特征之二——继承性
继承性的优缺点
优点:
- 减少了代码的冗余,提高了代码的复用性
- 便于功能的扩展
- 为之后多态性的使用,提供了前提
缺点:
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
继承性的格式
class A extends B{
}
B:父类(超类、基类,superclass)
A:子类(派生类、subclass)
- 体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法。
特别的,父类中声明为private的属性或方法,子类维承父类以后,仍然认为获取了父类中私有的结构。只有因为封装性的影响,使得子类不能直接调用父类的结构而已 - 子类继承父类以后,还可以声明自己特有的属性或方法:实现功能的拓展。
子类和父类的关系,不同于子集和集合的关系
Java中关于继承性的规定
- 一个父类可以被多个子类继承。
- Java中类的单继承性:一个类只能有一个父类。(C++允许多继承)
- 子父类是相对的概念,一个子类可以是另外一个类的父类。
- 子类直接继承的父类,称为直接父类,间接继承的父类,称为间接父类。
- 子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法。
举例
class Person{
private int age;
private String name;
public void show(){
System.out.println("Hello world");
}
}
// Person是Man的父类
class Man extends Person{
private String gender = "male";
// 可以直接调用父类中的方法
public void sayHi() {
show();
}
}
// Man是Student的直接父类,Person为间接父类
class Student extends Man{
private String garde = "seven";
}
// 一个类可以被多个子类继承
class Women extends Person{
private String gender = "female";
}
Java中Object类
- 如果我们没有显式的声明一个类的父类的话,则此类继承于java.lang.Object类
- 所有的java类(除java.lang.Object类之外)都直接或间接的继承于java.lang.Object。意味着,所有的java类具有java.lang.Object类中声明的功能。