黑马程序员技术交流社区

标题: 关于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