Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法访问类型为的封闭实例_Java - Fatal编程技术网

Java 无法访问类型为的封闭实例

Java 无法访问类型为的封闭实例,java,Java,我在Eclipse中编写了这个Java接口程序,但是在MyTriangle tmp=new MyTriangle()下面有一条红线当我运行程序时,会出现以下错误: 无法访问Question1类型的封闭实例。必须符合条件 带有Question1类型封闭实例的分配(例如。 x、 new A(),其中x是问题1的实例) 试试这个。为了简单起见,删除了这些方法 public class Test1 { public static void main( String [] args)

我在Eclipse中编写了这个Java接口程序,但是在MyTriangle tmp=new MyTriangle()下面有一条红线当我运行程序时,会出现以下错误:

无法访问Question1类型的封闭实例。必须符合条件 带有Question1类型封闭实例的分配(例如。 x、 new A(),其中x是问题1的实例)


试试这个。为了简单起见,删除了这些方法

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{}

MyTriangle
是一个非静态的内部类。这意味着与所有其他实例成员一样,它(及其实例)属于外部类的实例,而不是类本身。记住,要属于一个类,需要将事物定义为
静态

因此,您需要提供一个外部类实例,将内部类实例实例化为

new OuterClass().new MyTriangle();

如果您标记内部类
static
,使其嵌套,则允许您在静态上下文中引用它,就像公共静态
main()
方法一样。

这不是您的整个程序,我怀疑它都包含在名为
Question1
的单个文件和类中,正确吗?您在接口中定义了一组方法,但没有在子类中实现。这不是我的整个程序。而且正确!一切都有问题1.java请学习oops概念。您的代码还有其他缺陷。请尝试我的第二部分代码,如果它修复了您的问题,请告诉我,我真的很想知道为什么它被否决了。非常感谢。这就是我所需要的:MyTriangle tmp=新问题1()。新MyTriangle();
new OuterClass().new MyTriangle();