からメソッド継承されたメソッドの可視性を減らすことはできません:は、私はこのコンパイラエラーを得た親
You cannot reduce the visibility of a inherited method.
私は、次のここでのコード
class Parent {
public void func() {
System.out.println("in Parent");
}
}
public class TestClass extends Parent {
public static void main(String args[]) {
parent obj=new TestClass();
obj.addTest();
}
private void func() {
System.out.println("in child");
}
}
親クラスを持っている公共およびによって上書きされfunc()
方法がありますサブクラスTestClass
はプライベートです。コンパイラは可視性を減らすことができないというエラーを投げます。技術的に言うと、タイプTestClass
のオブジェクトを作成してタイプ親オブジェクトに割り当てるときは、func()
メソッドがオーバーライドされているので、TestClassのfunc()は常に呼び出されます。このエラーの原因は何ですか?誰かが私をはっきりと説明できますか?
ありがとうBohemain。私は理由がある。命名基準を指摘してくれてありがとう。 – Mojoy
こんにちは..これは私がスーパークラスで公開されているメソッドの子クラスの修飾子を保護していない理由を考えることができますか?プロテクトされた修飾子はパッケージやパッケージのサブタイプ内でアクセスできるので!! – Mojoy
'protected'メソッドは他の任意のクラスからは見えませんが、superの' public'メソッドは同じです。 *可視性が低下するとエラーになります。 – Bohemian