java static 再理解

java 中的static到底表示什么意思
被static修饰的方法能不能被子类重写,为什么?

静态 VS 动态

  1. 动态解析和静态解析
    静态解析指的是在类加载阶段就将直接引用替换成为符号引用,与之相对应,动态解析就是在方法调用的时候将直接引用去替换符号引用。

    可以实现这种静态解析的有静态方法、私有方法、实例构造器、父类方法

static语义

java中的static关键字表示静态的意思,何为静态。我的理解就是在编译器编译期间就和具体的类型绑定了。使用对象引用和访问静态风阀知识Java设计者给程序员的自由。我们应该直接使用类名来访问静态方法,而不要使用对象引用来访问。

这里涉及到类和对象引用的区别。方法如果和某个类绑定,那么就可以直接通过这个运行,但是如果方法是属于对象的,情况比较复杂。其实该类对象和该类子类的对象都是可以调用这个方法,这个是在运行时动态确定的。从这个意义上说是动态的,相对于之前的静态而言。

static方法能不能被子类重写

其实从语法上来说,java是并不会阻止你的,但是即使我们这样做了,我们仍然得不到预期的效果。