小弟最近刚接触JAVA,按照教材的要求做了一个小练习,如下,但是经过编译之后会出现两个错误:无法从静态上下文中引用非静态变量 this,哪位大侠能够帮我解释下吗?非常感谢!代码如下:public class Zoo2
{
class Animal
{
public int legs;

public void eat()
{
System.out.println("Eating.");
}

public void move()
{
System.out.println("Moving.");
}


}

public static void main(String args[])
{
Animal animal1=new Animal();
Animal animal2;
animal2=new Animal();

animal1.legs=4;

System.out.println("animal1 has "+animal1.legs+" legs.");
System.out.println("animal2 has "+animal2.legs+" legs.");

animal1.eat();
animal2.move();
}
}

解决方案 »

  1.   

    你的Animal类是内部类,要先new一个外部包装类,才能new一个Animal。
    代码如下。public class Zoo2 {
    class Animal {
    public int legs; public void eat() {
    System.out.println("Eating.");
    } public void move() {
    System.out.println("Moving.");
    } } public static void main(String args[]) {
    Zoo2 zoo2 = new Zoo2();
    Animal animal1 = zoo2.new Animal();
    Animal animal2;
    animal2 = zoo2.new Animal(); animal1.legs = 4; System.out.println("animal1 has " + animal1.legs + " legs.");
    System.out.println("animal2 has " + animal2.legs + " legs."); animal1.eat();
    animal2.move();
    }
    }
      

  2.   


    package com.CSDN;public class Zoo2 {
    class Animal {
    public int legs;
    public void eat() {
    System.out.println("Eating.");
    }
    public void move() {
    System.out.println("Moving.");
    }
    }

    public static void main(String args[]) {
    Zoo2 zoo2=new Zoo2();
    Zoo2.Animal animal1 = zoo2.new Animal();
    Zoo2.Animal animal2 = zoo2.new Animal();

    animal1.legs = 4;
    System.out.println("animal1 has " + animal1.legs + " legs.");//4
    System.out.println("animal2 has " + animal2.legs + " legs.");//0 legs默认值为0
    animal1.eat();//Eating
    animal2.move();//Moving
    }
    }
      

  3.   

    你可以不把Animal声名成内部类,这样你就可以通过import导入Animal类,然后就可以用你的那种
    Animal animal1=new Animal()声名了。
      

  4.   

    你好,我后来把Animal这个类定义在main()方法里面就能运行了,这是为什么呢?麻烦你能不能再讲详细一点呢?非常感谢!
      

  5.   

    因为 main 是static 方法
    你申明的animal类中有非静态变量 legs
      

  6.   

    你好,那我把Animal里面的legs变量,eat(),move()方法都改为static的能解决问题么?