• ベストアンサー

GetterとSetterをやったのに。

以下のプログラムを実行すると、フィールドA.aは不可視です。メソッドtestは型Aで不可視です。というエラーが出てきます。本に書いてあるとおり、やったのですが、どうしてダメなのかわかりません。ぜひ教えてください。 public class Sample { public static void main(String[] args) { A aa=new A(); System.out.println(aa.a); aa.test(); } } class A{ private String a = "A"; private void test(){ System.out.println("Test"); } public String getA() { return a; } public void setA(String a) { this.a = a; } }

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

何をしようとされているのか 全くわかりませんが これが A Testと表示 させるには public class Sample { public static void main(String[] args) { A aa=new A(); String b=aa.getA(); System.out.println(b); aa.test(); } } class A{ private String a = "A"; public void test(){ System.out.println("Test"); } public String getA() { return a; } public void setA(String a) { this.a = a; } }

corpus
質問者

お礼

ありがとうございます。 ところで、public void test()でなく、private void test()のままで、できる方法はないでしょうか?

その他の回答 (4)

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.5

>private void test()のままで、できる方法はないでしょうか privateなのでそのクラス(class A)以外からは アクセスできないので無理な要求の様に思われ ます。最近 掟破りな方法はないかと 求められるようなご質問がありますが それほどは詳しくないものでお気持ちや何か特殊な 状況をそれなりに感じておりますが今後の課題と させて頂きます。

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.4

public class Sample { public static void main(String[] args) { A aa=new A(); System.out.println(aa.getA());//変更(aa.aをaa.getA()に aa.test(); } } class A{ private String a = "A"; public void test(){ System.out.println("Test"); } public String getA() {//変更(privateをpublicに return a; } public void setA(String a) { this.a = a; } }

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

これは、エラーになる(サンプルの)ソースだと思います。 インスタンスのプライベートメンバである a に System.out.println(aa.a); のように直接アクセスはできませんよ、(できないようにしました、しましょう) そのかわり、 aa.getA() のようにアクセサー を定義してそれを使って呼び出しましょうというようなことを示しているんだと思います。 同じく、 aa.test(); もプライベートメソッドは、外部から呼び出せません(やってみれば、エラーになりますよ)というサンプルなんだと思います。

noname#49664
noname#49664
回答No.1

>フィールドA.aは不可視です。メソッドtestは型Aで不可視です。というエラーが出てきます。 ソースコードを見ましたが、それが正しい反応です。フィールドaもメソッドtestもprivateになっています。privateなものは、外部からアクセスできません。したがって、エラーになるのが正常です。 >本に書いてあるとおり、やったのですが、どうしてダメなのかわかりません。 その本の内容がどうなっているかわからないのでなんともいえないんですが・・・。「動かないサンプル」として掲載されているとか、あるいは単純にどこか写し間違っているとか、そういうことではないでしょうか。 もう一度、そのあたりの記述をよく読み返してみてはいかがでしょう。(これ以上のことは、その本が何かもわからないので・・・)

関連するQ&A