java繼承時(shí)能包括靜態(tài)的變量和方法嗎

子類繼承了超類定義的所有實(shí)例變量和方法包括靜態(tài)的變量和方法(馬克-to-win見下例),并且為它自己增添了獨(dú)特的元素。子類只能有一個(gè)超類。Java不支持多超類的繼承。

子類擁有超類的所有成員,但它不能直接訪問超類中被聲明成private的成員。馬克-to-win:兒子能拿父親保險(xiǎn)箱中的東西嗎?為什么要放保險(xiǎn)箱?

馬克- to-win:馬克 java社區(qū):防盜版實(shí)名手機(jī)尾號(hào): 73203。

class A1Mark {
    static int si=5;//靜態(tài)的屬性和方法一樣屬于子類,用子類或父類類名都可以調(diào)用靜態(tài)變量或方法
    int i; // 同一個(gè)包內(nèi),public by default
    private int j; // private to A
    int getJ() {
        return j;
    }
    static int getSi(){
        return si;
    }
    void setij(int x, int y) {
        i = x;
        j = y;
    }
}
// A1Mark's j is not accessible here.
class B1 extends A1Mark {
    static int sbi=6;//子類可以正常有靜態(tài)變量
    int total;
    void sum() {
        // total = i + j; // ERROR, j is not accessible here
        total = i + si+getJ()+getSi(); // no problem , i can be used here.
    }
/*子類的靜態(tài)方法甚至可以覆蓋父類的靜態(tài)方法。*/ 
    static int getSi(){
        return si*10;
    }
}
public class Test {
    public static void main(String args[]) {
        B1 subOb = new B1();
        subOb.setij(10, 12);//可以直接用基類的方法
        System.out.println(subOb.i+" "+B1.sbi+" "+subOb.si+" "+subOb.getSi()+" "+B1.si+" "+B1.getSi()+" "+A1Mark.si+" "+A1Mark.getSi());
        subOb.sum();
        System.out.println("Total is " + subOb.total);
    }
}

 

result is:

10 6 5 50 5 50 5 5
Total is 77