3

私はEclipseideで書かれた以下のコードを持っています:

public interface X
{
  final public static int SOME_CONST = 0;
}
public class Handle implements X
{
  protected void methodHandle () { }
 //...
}

public class User implements X
{
  Handle handle = new Handle();
  private void methodUser ()
  {
    Y y = new Y()  // anonymous inner class
    {
      public void methodY ()
      {
        handle.methodHandle (); // <--- why this is NOT giving error ?
      }
    }
  }
}

ですHandle.methodHandle ()protected、匿名の内部classメソッドの内部メソッドから呼び出すことができますか?なぜそれが起こっているのですか、私は何かが欠けていますか?Handleとの間の唯一の関係Userは、それらがimplement同じであるということXです。

4

3 に答える 3

6

両方のクラスが同じパッケージに含まれている場合は、保護されたメソッドを呼び出すことができます。

詳細については、こちらをご覧ください。

于 2011-07-06T06:06:06.567 に答える
2

呼び出し元のクラスが同じパッケージに含まれている場合、保護されたメソッドを呼び出すことができます。それが希望どおりでない場合は、メソッドをプライベートにする必要があります。

于 2011-07-06T06:06:13.977 に答える
1

同じパッケージ内のクラスは「無関係」ではありません。

于 2011-07-06T06:11:00.430 に答える