java之繼承中的靜態變量


package Test;

/**
 * Created by wangbin10 on 2018/7/9.
 * 我們知道靜態變量屬於類級別變量,對應每個類只有一份,類的所有實例共有一份,而成員變量則分別屬於每個對象;
 * 那么在類的繼承中,父類的靜態變量和成員變量,子類都會繼承,繼承的原則是什么?通過下面的測試,我們的結論是:
 * 1.不僅類的對象共享類的靜態變量,父類的所有子類對象也都共享父類的靜態變量,有且僅有一份,對其進行修改,會影響到所有類及對象;
 * 2.子類復制父類的成員變量,每個子類持有一份,互不影響。
 */
public class Parent {
    public static String STATIC_VAR = "parent";
    public String MEMBER_VAR = "member";

    public static void main(String[] args) {
        Child1 c1 = new Child1();
        Child2 c2 = new Child2();
        c1.setVar("child1");
        System.err.println(c1.getVar());
        System.err.println(c2.getVar());//輸出:child1,說明子類共享父類的靜態變量

        c1.setMember("mem change");
        System.err.println(c1.getMember());
        System.err.println(c2.getMember());//輸出:member,說明子類分別復制並持有一份父類的成員變量,互不影響
    }
}

class Child1 extends Parent {
    void setVar(String var) {
        STATIC_VAR = var;
    }

    String getVar() {
        return STATIC_VAR;
    }

    void setMember(String mem) {
        MEMBER_VAR = mem;
    }

    String getMember() {
        return MEMBER_VAR;
    }
}

class Child2 extends Parent {
    String getVar() {
        return STATIC_VAR;
    }

    String getMember() {
        return MEMBER_VAR;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM