2017-11-28 6 views
1

私はプログラミングが初めてで、来年はuniで勉強します。私のpublic static void mainでは、新しいSimpleCircleを作成することはできません。このエラーは自分のサークルでのみ発生します。助けてくれてありがとう! :)囲むインスタンスにはアクセスできません。割当をタイプの囲みインスタンスで修飾する必要があります(たとえばx.new A()、xはインスタンスです)

public class TestSimpleCircle { 

    class SimpleCircle { 
     double radius; 

     SimpleCircle(){ 
      radius = 1; 
     } 

     SimpleCircle(double newRadius){ 
      radius = newRadius; 
     } 

     double getArea() { 
      return radius * radius * Math.PI; 
     } 

     double getPerimeter() { 
      return 2 * radius * Math.PI; 
     } 

     void setRadius(double newRadius) { 
      radius = newRadius; 
     } 
    } 

    public static void main(String [] args) { 
     SimpleCircle circle = new SimpleCircle(); 
     System.out.println("the area of the circle of radius "+circle.radius+" is "+circle.getArea()); 

     SimpleCircle circle2 = new SimpleCircle(25); 
     System.out.println("the area of the circle of radius "+circle2.radius+" is "+circle2.getArea()); 

     SimpleCircle circle3 = new SimpleCircle(125); 
     System.out.println("the area of the circle of radius "+circle3.radius+" is "+circle3.getArea()); 

     circle.radius = 100; 
     System.out.println("The area of the circle of radius "+circle.radius+" is "+circle.getArea()); 
    } 
} 
+0

は、内部クラスを静的な作りとして、あなたは、このクラスを宣言している必要があります。 – teppic

答えて

1

TestSimpleCircleの内部クラスとしてSimpleCircleクラスを宣言しました。 あなたが

static class SimpleCircle 
0

SimpleCircleとして、それを別のファイルに移動または宣言のどちらか必要クラスTestSimpleCircleの内部クラスです。

SimpleCircle sc = tsc.new SimpleCircle(); 

TestSimpleCircle tsc = new TestSimpleCircle(); 

は今、あなたはTestSimpleCircleクラスを囲むのインスタンスに接続された内部クラスのインスタンスを作成することができます:これは、あなたが最初の例のために、囲むクラスのオブジェクトのインスタンスが必要であることを意味し

あなたが知っているように、内部クラスのオブジェクトのインスタンスを作成するには、それを所属させたいクラスを囲むクラスの正確なオブジェクトに指定する必要があります(例ではtsc.new)。

クラスを囲んでのオブジェクトのインスタンスなしにSimpleCircleのインスタンスを作成する必要がある場合static class SimpleCircle{code of your class here}