• 締切済み

java内部クラスについて

内部クラスがstaticな場合 public class mainclass{   public static void main(String[] args) {     innerClass ic = new innerClass();   }   public static class innerClass{   } } と innerClass ic = new innerClass();で動作しnewできますが、 class が static でない場合どういう書き方になりますでしょうか? 色々と理解不足がある状況だとおもいますがよろしくお願いいたします。

みんなの回答

回答No.5

基本は「public static」は無しにして、メイン・クラスの外に出す、どうしてもpublicが必要なが必要な場合は別ファイルを作る、と言う感じでしょうか。

muuming2001
質問者

お礼

よくよく考えたら内部クラスではstatic無しに実現できないですね。 ありがとうございました。

回答No.4

「回答No.1」はインナー・クラスにしないと言う事です。

muuming2001
質問者

お礼

よくよく考えたら内部クラスではstatic無しに実現できないですね。 ありがとうございました。

回答No.3

>public class mainclass{ >static dynamic d; >public static void main(String[] args) { >d = new dynamic(); >} >} ↑「static dynamic d;」の定義は必ず「main(~)」メソッドの外で定義して下さい。

muuming2001
質問者

お礼

よくよく考えたら内部クラスではstatic無しに実現できないですね。 ありがとうございました。

回答No.2

冗長的な感はありますが起動用クラスを作れば、別途ファイルを作る必要はありません(下記参照)。 mainメソッド内は「d = new dynamic();」だけにして、「dynamic( )」コンストラクターにプログラムを記述して下さい(dynamicの名前は分かりやすければ何でも良いです) public class mainclass{ static dynamic d; public static void main(String[] args) { d = new dynamic(); } } class dynamic{ dynamic( ){ innerClass ic = new innerClass(); } public class innerClass{ } }

muuming2001
質問者

お礼

よくよく考えたら内部クラスではstatic無しに実現できないですね。 ありがとうございました。

回答No.1

「public static」を消して、mainclassの外に出して下さい(下記参照) 「public」を残したい場合は「innerClass.java」と言うファイルを作って、そのファイルに「innerClass」を移動して下さい public class mainclass{ public static void main(String[] args) { innerClass ic = new innerClass(); } } class innerClass{ }

muuming2001
質問者

お礼

よくよく考えたら内部クラスではstatic無しに実現できないですね。 ありがとうございました。

関連するQ&A