今天继续来分享一下学习经验
static是一个常见的修饰符,它只能用于修饰在一个类里面定义的成员,如变量,方法,内部类,初始化语法块,内部枚举类。
它的作用就是将上述在类里定义的成员变成静态成员,也就是说所谓的类成员。
我们要知道所有被static修饰的成员都属于类,而不是单个的java对象。
静态方法
我们可以来看看下面的程序,关于被static修饰的静态方法
class Person{
public static void test(){
System.out.println("Person的test方法");
}
}
class Student extends Person{
@Override //1
public static void test(){
System.out.println("Person的test方法");
}
public static void main(String[] args){
Person person = new Person();
person.test();
Person student = new Student();
student.test();
}
}
此外有人会疑惑,那Student中的test方法不是和父类同名吗?请记住,在子类中的test方法,由于java不允许子类继承该方法,因此该方法只是子类中声明的一个普通的静态方法,该方法同样也无法给该类的子类继承
修改过来之后编译通过并且输出结果如下:
由于两次的声明都是使用Person类来声明的对象,虽然两个对象一个是Person的实例,一个是Student的实例,但是静态方法都是属于类,因此当两个对象调用类方法时,java会自动通过声明该对象的类去调用类方法,故两次都是调用Person类的test方法,如果没有static修饰符,则两个对象就会调用自己的成员方法,因为成员方法是属于对象的。