static关键字

static关键字可以用来修饰方法、变量、常量,和类属于同一级别。

静态变量、常量:

  1. 可以通过类名.量名调用,也可以通过对象.量名调用,但是不提倡后者,因为如此容易混淆静态和非静态属性。
  2. 对象共享一个静态成员

静态方法:

  1. 静态方法不能直接调用非静态的成员,不能用this
  2. 静态方法可以被重载,但不能被重写。
  3. 重载不是多态的体现(条件:要有继承关系,要有方法的重写,要有父类的引用指向子类对象)

 

1 静态方法内部不能调用非静态变量,不能用this(Cannot make a static reference to the non-static field i)

静态是类级别的。当new一个对象时,静态方法先加载到方法区,然后才在堆内存中为对象开辟空间。

静态方法先于非静态变量存在,静态方法存在的时刻非静态变量尚未存在,所以静态方法内部不能调用非静态成员成员变量。

同理,this指代当前对象,也不能被在静态方法中使用。

 

2 静态方法可以被重载,但不能被重写。

静态方法可以被重载,重载发生在同一个类里面,允许有相同的方法名和不同的形参列表、返回值类型。

静态方法不能被重写,重写发生在父类与子类的方法之间,而静态方法属于类级别,所以不能被重写。

就算子类中有一个与父类静态方法相同方法名、形参列表、返回值类型的方法,实例对象调用的也是父类静态方法。

 

posted @ 2019-03-15 09:55  IslandZzzz  阅读(124)  评论(0编辑  收藏  举报