这个问题在这里已经有了答案:
Java inner class and static nested class
(28 个回答)
8年前关闭。
我在Eclipse中写了这个Java接口(interface)程序,但是下面有一条红线MyTriangle tmp = new MyTriangle(); 当我运行程序时出现此错误:
No enclosing instance of type Question1 is accessible. Must qualify the allocation with an enclosing instance of type Question1 (e.g. x.new A() where x is an instance of 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;
}
}
最佳答案
MyTriangle
是一个非静态内部类。这意味着与所有其他实例成员一样,它(&它的实例)属于外部类的实例,而不是类本身。记住属于一个类的东西需要定义为static
.
因此,您需要提供一个外部类实例来将内部类实例化为
new OuterClass().new MyTriangle();
如果标记内部类
static
这使得它嵌套它允许您在静态上下文中引用它,如公共(public)静态 main()
方法。
关于java - 没有封闭的类型实例是可访问的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595490/