プロが教える店舗&オフィスのセキュリティ対策術

以下のプログラムを実行すると、フィールド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;
}
}

A 回答 (5件)

>private void test()のままで、できる方法はないでしょうか



privateなのでそのクラス(class A)以外からは
アクセスできないので無理な要求の様に思われ
ます。最近 掟破りな方法はないかと

求められるようなご質問がありますが
それほどは詳しくないものでお気持ちや何か特殊な
状況をそれなりに感じておりますが今後の課題と
させて頂きます。
    • good
    • 0

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;
}
}
    • good
    • 0

これは、エラーになる(サンプルの)ソースだと思います。


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

何をしようとされているのか


全くわかりませんが
これが 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;
}
}
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/05/05 16:12

>フィールドA.aは不可視です。

メソッドtestは型Aで不可視です。というエラーが出てきます。

ソースコードを見ましたが、それが正しい反応です。フィールドaもメソッドtestもprivateになっています。privateなものは、外部からアクセスできません。したがって、エラーになるのが正常です。

>本に書いてあるとおり、やったのですが、どうしてダメなのかわかりません。

その本の内容がどうなっているかわからないのでなんともいえないんですが・・・。「動かないサンプル」として掲載されているとか、あるいは単純にどこか写し間違っているとか、そういうことではないでしょうか。
もう一度、そのあたりの記述をよく読み返してみてはいかがでしょう。(これ以上のことは、その本が何かもわからないので・・・)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!