大家帮忙检查一下错在那里
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 //类名要首字母大写
----------------解决方案--------------------------------------------------------