以下のプログラムを実行すると、フィールド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.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.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.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ランキング
-
変数を動的に利用するには?
-
ArrayList でスタックを
-
NoSuchMethodErrorが解決できま...
-
getActualMaximum(Calendar.DAY...
-
プログラミングの問題です。大...
-
【初心者です】javaで平均値を...
-
System.exit()の値を取得したい
-
Log4jで機能毎に別ファイルへ出...
-
このプログラミング誰か教えて...
-
C言語のポインターに関する警告
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
-
javaで質問です。 文字列2023/2...
-
JSPやサーブレットでSystem.out...
-
[JAVA]try 内の変数を外で!?
-
配列にnullを代入すると、null...
-
VBAで配列の計算
-
Path型をString型へ変換する(Java)
-
変数を動的に作るには?
-
1~100までの数字を表示し、か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
変数を動的に利用するには?
-
中カッコ{}だけの記述について
-
System.exit()の値を取得したい
-
Javaでlog4jを使ってログ出力を...
-
NoSuchMethodErrorが解決できま...
-
javaで特定の文字列から特定の...
-
Socketの接続のタイムアウトを...
-
Java プログラム public class ...
-
javaのプログラミングで作るRPG...
-
インタフェイス実装と抽象クラ...
-
コマンドライン引数の*(アフ...
-
【初心者です】javaで平均値を...
-
Javaで日本語の出力が文字化けする
-
(大至急)JavaでATMもどきを作成
-
コンストラクタの引数の中のnew?
-
Java 最大公約数 gcd
-
C# DatagridviewにExcelシート...
-
randomで
-
GetterとSetterをやったのに。
おすすめ情報