該当する場合は、サブクラスメソッドを使用して

頑固な:

私は、次のコードを持っています:

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());
    }
}

Aでのテスト()メソッドは、Aさんのval()を呼び出すためにはtrueを返します。いくつかの研究の後、私はこれはJavaで期待されていることがわかります。しかし、私はAから呼び出されたときにBから呼び出された場合はfalseを印刷し、真のために)(テストをしたいと思いますそれを行うには、それは可能ですか?

彼らは次のとおりでした:

あなたのコードの呼び出し理由Aval()とないBのではval()ということである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;
    }
}

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=410222&siteId=1