7

この Java インターフェイス プログラムを Eclipse で作成しましたが、 MyTriangle tmp = new MyTriangle();の下に赤い線があります。プログラムを実行すると、次のエラーが表示されます。

タイプ Question1 の外側のインスタンスにアクセスできません。タイプ Question1 の囲みインスタンスで割り当てを修飾する必要があります (egxnew A() ここで、x は Question1 のインスタンスです)。

 public static void main(String[] args) 
    {   
     MyTriangle tmp = new MyTriangle();
     tmp.getSides();
     System.out.println();
     System.out.println("The area of the triangle is " + tmp.computeArea());
     }

interface Triangle
{
 public void triangle();
 public void iniTriangle(int side1, int side2, int side3);
 public void setSides(int side1, int side2, int side3);
 public void getSides();
 public String typeOfTriangle(); 
 public double computeArea();            
}

 class MyTriangle implements Triangle
 {
  private int side1,side2,side3;
  public  void triangle()
  {
    this.side1 = 3;
    this.side2 = 4;
    this.side3 = 5;
  } 
}
4

2 に答える 2

19

MyTriangle非静的内部クラスです。つまり、他のすべてのインスタンス メンバーと同様に、それ (およびそのインスタンス) は、クラス自体ではなく、外部クラスのインスタンスに属します。として定義する必要があるクラスに属することを忘れないでくださいstatic

したがって、外側のクラス インスタンスを提供して、内側のインスタンスを次のようにインスタンス化する必要があります。

new OuterClass().new MyTriangle();

ネストされた内部クラスstaticをマークすると、 public staticメソッドのような静的コンテキストで参照できるようになります。main()

于 2013-09-09T02:49:30.250 に答える
9

これを試して。簡単にするためにメソッドを削除しました

public class Test1 {     

    public static void main( String [] args) 
    { 
        MyTriangle h1 = new MyTriangle();     
    } 
} 
class MyTriangle implements Triangle{
    int side1;
    int side2;
    int side3;

    public MyTriangle(){
        this.side1 = 1;
        this.side2 = 2;
        this.side3 = 3;
    }
}
interface Triangle{}

完全なコードを貼り付けていません。コードは次のようになるはずです。

次に、以下に示すように、三角形のインスタンスを作成する前に、メイン クラスのインスタンスを作成する必要があります。

public class Test{
     class MyTriangle 
     {
      int side1,side2,side3;
      public   MyTriangle()
      {
        this.side1 = 3;
        this.side2 = 4;
        this.side3 = 5;
      } 

    }
public static void main(String[] args) 
    {   
     MyTriangle h1 = new Test(). new MyTriangle();   // Fix is here**   
     }
}

interface Triangle{}
于 2013-09-09T02:47:43.200 に答える