当前位置: 代码迷 >> Java相关 >> 大家帮忙检查一下错在那里
  详细解决方案

大家帮忙检查一下错在那里

热度:120   发布时间:2009-09-19 12:19:26.0
大家帮忙检查一下错在那里
class Animal {
    int id = 0;
    int color = 0;
   
    public void setId(int id){
        this.id = id;
    }
   
    public void setColor(int color) {
        this.color = color;
    }
   
    public int getId() {
        return id;
    }
   
    public int getColor() {
        return color;
    }
}

class dog extends Animal {
    int age = 0;
   
    public void setAge(int age) {
        this.age = age;
    }
   
    public int getAge() {
        return age;
    }
}

public class Dogs{
    public static void main(String[] args) {
        dog m = new dog();
        dog.setId(10001);
        dog.setColor(231);
        dog.setAge(2);
        System.out.println("M ID:" + m.getId());
        System.out.println("M color:" + m.getColor());
        System.out.println("M Age:" + m.getAge());
    }
}

――――――――――――――――――――――――――

编译的时候会出现“无法从静态上下文中应用非静态……”。
搜索更多相关的解决方案: 检查  

----------------解决方案--------------------------------------------------------
dog.setId(10001);
dog.setColor(231);
dog.setAge(2);
就是这几句出错了,setID,setColor,setAge不是静态方法,是不能这样调用的,你的想法应该是
m.setId(10001);
m.setColor(231);
m.setAge(2);
,内存里面没有dog这块区域,你是调用不了里面的东西的,而且,你应经定义了m,为什么有不用呢?你不对m赋值,取出来的都是系统自己初始化的!

----------------解决方案--------------------------------------------------------
谢谢了,这么一说就明白了。我这程序是修改过的,原本new出来的就是dog,结果忘记修改这里。
----------------解决方案--------------------------------------------------------
Class dog //类名要首字母大写
----------------解决方案--------------------------------------------------------