繼承

通過在類之間使用 extends 關鍵字,超類的所有屬性(也稱為父類基類 )都存在於子類中(也稱為子類派生類

public class BaseClass {

    public void baseMethod(){
        System.out.println("Doing base class stuff");
    }
}

public class SubClass extends BaseClass {

}

SubClass 的例項繼承baseMethod() 的方法:

SubClass s = new SubClass();
s.baseMethod();  //Valid, prints "Doing base class stuff"

可以將附加內容新增到子類中。這樣做允許子類中的其他功能,而無需對基類或同一基類的任何其他子類進行任何更改:

public class Subclass2 extends BaseClass {

    public void anotherMethod() {
        System.out.println("Doing subclass2 stuff");
    }
}

Subclass2 s2 = new Subclass2();
s2.baseMethod(); //Still valid , prints "Doing base class stuff"
s2.anotherMethod(); //Also valid, prints "Doing subclass2 stuff" 

欄位也是繼承的:

public class BaseClassWithField {

    public int x;

}

public class SubClassWithField extends BaseClassWithField {

    public SubClassWithField(int x) {
        this.x = x; //Can access fields
    }
}

private 欄位和方法仍然存在於子類中,但是不可訪問:

public class BaseClassWithPrivateField {

    private int x = 5;

    public int getX() {
        return x;
    }
}

public class SubClassInheritsPrivateField extends BaseClassWithPrivateField {

    public void printX() {
        System.out.println(x); //Illegal, can't access private field x
        System.out.println(getX()); //Legal, prints 5
    }
}

SubClassInheritsPrivateField s = new SubClassInheritsPrivateField();
int x = s.getX(); //x will have a value of 5.

在 Java 中,每個類最多可以擴充套件一個其他類。

public class A{}
public class B{}
public class ExtendsTwoClasses extends A, B {} //Illegal

這稱為多重繼承,雖然它在某些語言中是合法的,但 Java 不允許它與類一起使用。

因此,每個類都有一個不分支的祖先連鎖類,導致所有類下降。