2011-07-15 1 views
4

Utilクラスにオブジェクト参照を渡しています。私はUtilのクラスで保護されたメソッドを呼び出すためにしようとしていますが、私は、コンパイル時のエラーを取得 -他のオブジェクトからのアクセスに関して、保護されたメソッドのアクセスレベルとは何ですか?

The method setPositionChild(Field, int, int) from the type Manager is not visible 

保護されたメソッドを呼び出すには、それが唯一の実装クラスであることが要求されますか?私は外部クラスに参照を渡すことはできませんし、そこから参照を呼び出すことはできますか?

+0

[Javaでは、public、default、protected、privateの違いは何ですか?](http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public -default-protected-and-private) –

答えて

7

サブクラスから保護されたメソッドにアクセスできます。任意のクラスからアクセスしたい場合は、そのメソッドをpublicにします。詳細を見るhere

@Sean Patrick Floydが同じパッケージのクラスから言いましたように!

+2

同じパッケージ内のクラスから! –

+0

"保護されたメソッドはサブクラスからアクセスできます。"サブクラスの参照を外部クラスに渡して、その外部クラスからメソッドを呼び出すと、コンパイル時エラーがスローされるため、これは「保護されたメソッドはサブクラスの実装からアクセスできますか? –

+1

@ user470184(a)そのサブクラスのどこかからアクセスしようとしている場合や、(b)同じパッケージ内にあるクラスのインスタンスからアクセスしようとしている場合を除き、インスタンスの保護されたメソッドにアクセスすることはできません。オブジェクトのインスタンスを持っていても、そのメソッドにアクセスすることはできません。私があなたの説明から理解しているのは、あなたがそのメソッドをpublicにする必要があるということです。 – Nishant

関連する問題