问)我得到一个编译错误10 ::非静态变量,这不能从静态内容中引用
现在该怎么办?
class Computer
{
void method()
{
System.out.println("this i objects");
}
public static void main(String[] args)
{
Laptop mtd = new Laptop();
Computer mtd1 = new Computer();
mtd.method();
mtd1.method();
}
class Laptop
{
void method()
{
System.out.println("using laptop method");
}
}
}
答案 0 :(得分:1)
笔记本电脑是计算机的内部类,因此您必须从计算机实例中实例化笔记本电脑。或者您可以将内部笔记本电脑类标记为静态,然后您可以直接实例化它。我的例子演示了两种方法:
class Computer
{
public static void main(String[] args)
{
Computer computer = new Computer();
computer.method();
// Instantiate normal inner class from instance object.
Laptop laptop = computer.new Laptop(); // Or: new Computer().new Laptop();
laptop.method();
// Instantiate static inner class directly.
StaticLaptop staticLaptop = new StaticLaptop();
staticLaptop.method();
}
void method()
{
System.out.println("I'm Computer!");
}
class Laptop
{
void method()
{
System.out.println("I'm Laptop!");
}
}
static class StaticLaptop
{
void method()
{
System.out.println("I'm StaticLaptop!");
}
}
}
答案 1 :(得分:0)
您已将Laptop
放入Computer
班级。
你应该重构为static class Laptop
。否则,您将笔记本电脑实例绑定到特定的计算机实例,您可能不想这样做。 (如果您真的想要这样做,那么您必须写new Computer().new Laptop();
)
虽然我认为,实际上,你想写
class Laptop extends Computer
称为继承。