
以下のプログラムを実行すると、フィールド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;
}
}
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;
}
}
ありがとうございます。
ところで、public void test()でなく、private void test()のままで、できる方法はないでしょうか?
No.5
- 回答日時:
>private void test()のままで、できる方法はないでしょうか
privateなのでそのクラス(class A)以外からは
アクセスできないので無理な要求の様に思われ
ます。最近 掟破りな方法はないかと
求められるようなご質問がありますが
それほどは詳しくないものでお気持ちや何か特殊な
状況をそれなりに感じておりますが今後の課題と
させて頂きます。
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;
}
}
No.3
- 回答日時:
これは、エラーになる(サンプルの)ソースだと思います。
インスタンスのプライベートメンバである a に
System.out.println(aa.a);
のように直接アクセスはできませんよ、(できないようにしました、しましょう)
そのかわり、
aa.getA() のようにアクセサー を定義してそれを使って呼び出しましょうというようなことを示しているんだと思います。
同じく、
aa.test();
もプライベートメソッドは、外部から呼び出せません(やってみれば、エラーになりますよ)というサンプルなんだと思います。

No.1
- 回答日時:
>フィールドA.aは不可視です。
メソッドtestは型Aで不可視です。というエラーが出てきます。ソースコードを見ましたが、それが正しい反応です。フィールドaもメソッドtestもprivateになっています。privateなものは、外部からアクセスできません。したがって、エラーになるのが正常です。
>本に書いてあるとおり、やったのですが、どうしてダメなのかわかりません。
その本の内容がどうなっているかわからないのでなんともいえないんですが・・・。「動かないサンプル」として掲載されているとか、あるいは単純にどこか写し間違っているとか、そういうことではないでしょうか。
もう一度、そのあたりの記述をよく読み返してみてはいかがでしょう。(これ以上のことは、その本が何かもわからないので・・・)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java final 1 2022/06/10 22:49
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Java eclipse実行ができない 2 2022/07/27 04:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数を動的に利用するには?
-
System.exit()の値を取得したい
-
中カッコ{}だけの記述について
-
Javaの問題集の解答が意味不明です
-
JavaのEnum型について
-
プログラミングの問題です。大...
-
コンストラクタの引数の中のnew?
-
DESを使用した暗号化/復号化処...
-
javaのプログラミングで作るRPG...
-
コマンドライン引数の*(アフ...
-
Javaでlog4jを使ってログ出力を...
-
replaceAllが使えない場合の取...
-
Eclipseのパッケージについて
-
Java プログラム public class ...
-
JSPやサーブレットでSystem.out...
-
オブジェクトの中のプロパティ...
-
ORA-01858: 数値を指定する箇所...
-
動的配列が存在(要素が有る)か...
-
IF関数でEmpty値を設定する方法。
-
yyyymmddからyyyy/mm/d...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
Javaでlog4jを使ってログ出力を...
-
プログラミングの問題です。大...
-
コンストラクタの引数の中のnew?
-
Socketの接続のタイムアウトを...
-
NoSuchMethodErrorが解決できま...
-
System.exit()の値を取得したい
-
初心者なので教えてほしいです。
-
インタフェイス実装と抽象クラ...
-
javaのプログラミングで作るRPG...
-
C# DatagridviewにExcelシート...
-
replaceAllが使えない場合の取...
-
クラスを使った電卓のプログラム
-
ArrayList でスタックを
-
元旦からの日数を入力して、何...
-
日本語が文字コードによっては...
-
Processing :指定フォルダ内の...
-
【正規表現】< と > に囲まれた...
-
GetterとSetterをやったのに。
おすすめ情報