変数もだけど、もちろんメソッドも同じだし。
言語仕様からすると当然だけど、なんかイヤな感じがするのはなんでだろう???
private=クラス内、protected=パッケージ/継承内、public=公開というスコープ自体の意義を考えてみんといかんのか???
import java.io.Serializable; public class PrivateTest implements Serializable { private static final long serialVersionUID = 7671423480229862598L; String text = null; private String textPrivate = null; protected String textProtected = null; public String textPublic = null; public PrivateTest(String text) { this.text = "NoSpecified:" + text; this.textPrivate = "Private:" + text; this.textProtected = "Protected:" + text; this.textPublic = "Public:" + text; } public static void main(String[] arg) { PrivateTest test1 = new PrivateTest("TEST-1"); PrivateTest test2 = new PrivateTest("TEST-2"); test1.printText(test2); test2.printText(test1); } private void printText(PrivateTest test) { System.out.println(test.text); System.out.println(test.textPrivate); System.out.println(test.textProtected); System.out.println(test.textPublic); } }
【実行結果】
NoSpecified:TEST-2
Private:TEST-2
Protected:TEST-2
Public:TEST-2
NoSpecified:TEST-1
Private:TEST-1
Protected:TEST-1
Public:TEST-1