簡體   English   中英

如果適用,使用子類的方法

[英]Using, if applicable, the subclass' method

我有以下代碼:

public class A {
    private boolean val(){
        return true;
    }

    protected boolean test(){
        return val();
    }
}

public class B extends A {
    private boolean val(){
        return false;
    }
}

public class C {
    public static void main(String[] args){
        B b = new B();
        System.out.println(b.test());
    }
}

它返回 true,因為 A 中的 test() 方法調用了 A 的 val()。 經過一番研究,我了解到這是 Java 中的預期。 但是,我希望 test() 在從 B 調用時打印 false,從 A 調用時打印 true。可以這樣做嗎?

您的代碼調用Aval()而不是Bval()的原因是val()方法具有private訪問修飾符,因此不能被覆蓋。 將訪問修飾符更改為protected

public class A {
    protected boolean val(){
        return true;
    }

    protected boolean test() {
        return val();
    }
}

public class B extends A {
    protected boolean val() {
        return false;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM