
今晩は、javaの初心者です。宜しく願いします。
下のようなコードを書いたら、「アクセス可能な型 C1 のエンクロージング・インスタンスが
ありません。
型 C1 のエンクロージング・インスタンスで割り振りを限定する必要があります
(たとえば x.new A() で、x は C1 のインスタンス)。」
とエラーが出ました。
eclipseでは、「C2 c_2 = new C2() ;」の箇所で赤いエラーマークが表示されています。
C1クラスとC2クラスを分けてやると正常に実行されます。
C1クラスの中にC2クラスを作ると文法的にどこがまずいのでしょうか。
あるクラスの中に別のクラスを書いているプログラムを見たような気もするのですが。
C1クラスとC2クラスをわかるのとはJAVA的に何がいけないのでしょうか。
原因がさっぱり分りません、宜しくお願いいたします。
=======================================================================
public class C1
{
int a = 9 ;
int b = 8 ;
int c = 7 ;
int d = 6 ;
//C2 c_2 ;
public void Calc1()
{
System.out.println("a+b= " + (a+b)) ;
}
public static void main(String[] args)
{
C2 c_2 = new C2() ;
c_2.Calc2() ;
C1 c_1 = new C1() ;
c_1.Calc1();
//c_1.Calc2();
}
class C2
{
//int c = 7 ;
//int d = 6 ;
public void Calc2()
{
System.out.println("c-d= " + (c-d)) ;
}
}
}
=========================================================================
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
それか
C1 c_1 = new C1() ;
C2 c_2 = c_1.new C2() ;
と、c_1を先に宣言
なんにせよ、エラーメッセージは重要なヒントです。
自分で解決するにせよ、人に直してもらうにせよ、まずは、エラーメッセージの内容を確認することから始まります。
「エラーになった」だけじゃ、答えようがありません。
No.6
- 回答日時:
>c_2 = c_1.(new C2()) ;
>c_2 = new (c_1.(new C2()) ;
>
>その他色々試しましたが、全てエラーでした。
>冷やかしはやめて下さい。
それは、あなたの書き方が間違ってるから。
書くなら
c_2 = c_1.new C2();
c_2 = new C1().new C2();
だし。
No.5
- 回答日時:
冷やかす? 手元ではちゃんと動くんだがなぁ.
その「色々試した」ってのは, 具体的にはどうやった? そして, 「全てエラーでした」ってのは, それぞれに対してどんなエラーメッセージが出たんだ?
No.4
- 回答日時:
#3 です。
>C1のインスタンスメソッド中でやってないのが間違ってる。
すいません間違ってますね・・・
C1のインスタンスなしでやってるのが間違ってる。
が正しいですね。
No.3
- 回答日時:
>「new C2();」でインスタンス化をしてると考えているのですが、その考えはどこが間違っているのでしょうか。
C1のインスタンスメソッド中でやってないのが間違ってる。
以下がダメなのと同じ。
public Class C1 {
int a;
public static void main(String[] args) {
System.out.println("a=" + a);
}
}
No.2
- 回答日時:
詳細は「内部クラス」とか「インナークラス」とか「inner class」とかで調べてください.
#1 に書いたんだけど, 「new C2() でインスタンス化する」ためにはクラスC1 のインスタンスを必要とします. そして, 変数 c_1 にクラスC1 のインスタンスがあれば
c_1.new C2()
という形で「c_1 に付随する C2 のインスタンス」を作ることができます. このようにして作った C2 のインスタンスは, c_1 のメンバーに対し無条件に (アクセス指定を無視して) アクセス可能です.
c_2 = c_1.(new C2()) ;
c_2 = new (c_1.(new C2()) ;
その他色々試しましたが、全てエラーでした。
冷やかしはやめて下さい。
No.1
- 回答日時:
C2 は static じゃないから, クラスC2 のインスタンスを作るためにはクラスC1 のインスタンスが必要.
Tacosanさん、回答ありがとうございます。
C2クラスがC1クラスの中に入れ子見たいにあるのと、別クラスになるのとは文法的にどのように違う
のでしょうか。
「new C2();」でインスタンス化をしてると考えているのですが、その考えはどこが間違ってい
るのでしょうか。
また、クラスC2 のインスタンスを作るためにはクラスC1 のインスタンス化をしてやるのは、どの
ように具体的に書くのでしょうか。
宜しくお願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java final 1 2022/06/10 22:49
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private static という変数の修飾
-
javaのクラスの作り方、エラー...
-
VB.NET getとsetの概念がわかり...
-
インスタンス生成で、○○.xxx();...
-
newしないインスタンス?実体化...
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
非staticフィールドを参照でき...
-
SQLを連続発行する時の正しい(?...
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
変数の参照でエラーが出てしま...
-
JDBC ドライバーのロードの方...
-
クラス、インスタンスメソッド...
-
static 及びthisについて
-
複数のクライアントがサーバの...
-
クラスのインスタンス名をクラ...
-
Servletにおけるスレッド間での...
-
C# WebRequestでcookieの設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクト参照がオブジェク...
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
VB.NET getとsetの概念がわかり...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
javaのクラスの作り方、エラー...
-
クラスのインスタンス名をクラ...
-
C#の構造体の開放のしかた
-
エクセル(複数インスタンス)...
-
VB6.0で、DLLを動的に参照したい
-
C#「オブジェクト参照が必要で...
-
vb.netでFAXを送信する方法
おすすめ情報