黑马程序员技术交流社区
标题:
关于Static关键字的一个疑问
[打印本页]
作者:
楼夜雪
时间:
2015-10-2 09:49
标题:
关于Static关键字的一个疑问
package day08;
public class Grade1Student extends Student{
private String name;
private int age;
private String sex;
private String School;
private static int grade;
public Grade1Student() {
super();
// TODO Auto-generated constructor stub
}
public Grade1Student(String name, int age, String sex, String name2,
int age2, String sex2, String school, int grade) {
super(name, age, sex, name2, age2, sex2, school, grade);
// TODO Auto-generated constructor stub
}
public Grade1Student(String name, int age, String sex) {
super(name, age, sex);
// TODO Auto-generated constructor stub
}
public Grade1Student(String name, int age) {
super(name, age);
// TODO Auto-generated constructor stub
}
public Grade1Student(String name, int age, String sex, String school) {
super();
this.name = name;
this.age = age;
this.sex = sex;
School = school;//静态变量没有this关键字
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getSchool() {
return School;
}
public void setSchool(String school) {
School = school;
}
public static int getGrade() {
return grade;
}
public static void setGrade(int grade) {
Grade1Student.grade = grade;
}
}
//我想创建一个四年级的学生类,于是把年级定义成静态
但是eclipse自动给出的Gradeget set方法也是静态的,但是报错了 为什么?
方法去掉static之后就OK了
这是在同一个类里面 而且都是静态的 为什么会报错啊 静态调用静态 思想没错吧
作者:
楼夜雪
时间:
2015-10-2 10:18
大神告诉我为什么
作者:
韩春兴
时间:
2015-10-2 13:36
66666666666666666666666666666666666666666666666666
作者:
不爱念经的小僧
时间:
2015-10-2 14:12
你上面写的SetGrade()方法是可以静态的,而且你去掉static也是没错的!这可以从他们在内存中的加载顺序就可以知道的,static变量和方法是在方法区中并且优先于对象存在的,而实类变量在这个时候还不存在,所以static方法只能访问静态变量;非static方法可以访问static变量,是因为这个时候对象已经存在了,故可以直接访问静态了。
作者:
Arron
时间:
2015-10-2 23:24
=-= 你为啥非得写成静态的呀 ..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2