static

类成员,被类所拥有,每个类在程序运行周期内只会加载一次,也就是说一个内存中只存在一个

,他被所有实例共享

static 成员可在它任何对象创建之前进行访问,无需引用任何对象

public static String name;

实例成员 在创建对象时所拥有,每次new就会创建一个实例,实例成员为实例所拥有,每个使用都有一个

public String address;

Student.name   静态访问方式,类名。属性名

共享同一个name  但每个都有自己的address


// 类方法-》调用方式与类成员一样

public static void test() {

System.out.println("static");

}

// 实例方法-》调用方式与实例成员一致

public void test(String name) {

System.out.println("non-static");

}

stu.name=>Student.name

如果使用实例来访问类变量/类方法,在底层会转变成使用类名来访问

静态属性和静态方法能被继承,但是没有被重写(overwrite)而是被隐藏. 因为重写是实现多态的,同一个父类变量指向不同子类实例

只有实例方法能实现多态,类方法不能实现多态


按照Java加载顺序  static 先加载类, 然后进行静态变量初始化  ,再创建对象

静态方法只能访问静态属性

静态方法中不能有 this 丶 super 关键字(没有创建对象)

你可能感兴趣的:(static)