CircleとSubは練習クラスの中にある、インナークラスというものです。
インナークラスをnewするには外側のクラスのインスタンスが必要になるため、
まずは外側のクラスをnewする必要があります。
Java
1public class 練習 {
2 public static void main(String[] args) {
3 Sub sub = new 練習().new Sub();
4 Circle cir = sub.calcCircle(5);
5 System.out.println(cir.circle);
6 System.out.println(cir.circleArea);
7 }
8
9 public class Circle {
10 double circle; // 円周
11 double circleArea; // 円の面積
12 }
13
14 public class Sub {
15 public Circle calcCircle(int r) {
16 Circle cir = new Circle();
17 cir.circle = 2 * r * 3.14;
18 cir.circleArea = r * r * 3.14;
19 return cir;
20 }
21 }
22}
もしくは以下。
クラス定義にstaticを付ける。
こうすることで、インナークラスでも普通のクラスのように扱えるようになります。
Java
1public class 練習 {
2 public static void main(String[] args) {
3 Sub sub = new Sub();
4 Circle cir = sub.calcCircle(5);
5 System.out.println(cir.circle);
6 System.out.println(cir.circleArea);
7 }
8
9 public static class Circle {
10 double circle; // 円周
11 double circleArea; // 円の面積
12 }
13
14 public static class Sub {
15 public Circle calcCircle(int r) {
16 Circle cir = new Circle();
17 cir.circle = 2 * r * 3.14;
18 cir.circleArea = r * r * 3.14;
19 return cir;
20 }
21 }
22}
もしくは以下。
練習クラスの外に出す。publicなクラスは1つのファイルに1つしか定義できないため、
publicを外しましょう。
Java
1public class 練習 {
2 public static void main(String[] args) {
3 Sub sub = new Sub();
4 Circle cir = sub.calcCircle(5);
5 System.out.println(cir.circle);
6 System.out.println(cir.circleArea);
7 }
8}
9
10class Circle {
11 double circle; // 円周
12 double circleArea; // 円の面積
13}
14
15class Sub {
16 public Circle calcCircle(int r) {
17 Circle cir = new Circle();
18 cir.circle = 2 * r * 3.14;
19 cir.circleArea = r * r * 3.14;
20 return cir;
21 }
22}