static关键字

特点:

随着类的加载而加载

优先于对象存在

被所有对象所共享

可以直接被类名调用

使用注意:

静态方法只能访问静态成员

但是非静态成员可以访问静态成员;

静态方法中不可以使用this,super关键字

主方法(main)是静态的(可以利用类名去调用静态的main方法,很正常!但是会陷入死循环,导致内存溢出,jvm自动停止!)

public static void main(String[] agrs){}

 

可修饰字段,方法。

static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。

              static 修饰的字段 == 类字段

              static 修饰的方法 == 类方法

 

没使用static修饰的字段和方法,成员属于类的单个实例,

       不属于类。

              没有static 修饰的字段 == 实例字段

              没有static 修饰的方法 == 实例方法

 

类和实例访问字段和方法的语法:

访问类成员:       类.字段     类.方法

访问实例成员:    实例.字段         实例.方法

 

我的总结:

static 修饰的字段和方法,既可以通过类调用,也可以使用实例调用;

static 修饰的字段和方法,只能使用实例来调用(建议使用:类名来调用;    其实在底层,对象调用类成员,也会转换类名调用)

 

static关键字不能与thissuper同时连用!

 

1.
main 因为是static静态的,不能指示新创建的类和父类
this(有参数/无参数)  用于调用本类相应的构造函数
super(有参数/无参数) 用于调用父类相应的构造函数
this.  后跟方法或属性 指示本类的方法或属性
super. 后跟方法或属性(父类中指明的public protected)

2.
调用父类方法改变此变量就只能改变父类里面的此变量,而不能改变子类里面的变量,为什么呢?

调用父类的方法改变的变量只能是父类的变量这是必然的,因为父类中不存在子类新加的变量,因此只能改变父类中的变量

原文地址:https://www.cnblogs.com/whu-2017/p/9225399.html