支離滅裂なことを言ってるかもしれませんが疑問に思ったので質問させてください。
java
1interface Hoge { 2 void printf(); 3} 4public class MainSystem { 5 protected Hoge createTest(final int param) { 6 final String value = "Hello"; 7 8 return new Hoge() { 9 @Override 10 public void printf() { 11 System.out.println("param = " + param); 12 System.out.println("value = " + value); 13 } 14 }; 15 } 16 17 public static void main(String... args) { 18 MainSystem ms = new MainSystem(); 19 ms.createTest(12).printf(); 20 } 21} 22
↑のコードなのですが、メソッドの中で無名クラスをつくってインスタンスを返しています。この中で作ったHogeを実装した無名クラスに対して、アクセス修飾子がublicなprintfメソッドを外側で実行すれば思ったとおりの結果が返ってくるのですが、protected、またはなにもつけなければエラーになります。
なぜpublicでなければならないのでしょうか。
教えていただきたいです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。