static的继承:静态方法只能隐藏(hidden),不能重写(override)

来源:互联网 发布:android培训 知乎 编辑:程序博客网 时间:2024/05/16 20:30

     JAVA静态方法形式上可以重写,但从本质上来说不是JAVA的重写。因为静态方法只与类相关,不与具体实现相关,声明的是什么类,则引用相应类的静态方法(本来静态无需声明,可以直接引用)

public class Static {    public static void main(String[] args) {        A a = new A();        a.a();// a        A a1 = new B();        a1.a();// a        B a2 = new B();        a2.a();// b    }}class A {    public static void a() {        System.out.println("a");    }}class B extends A {    // 不能@Override,编译器会报错    public static void a() {        System.out.println("b");    }}


 

非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。

       所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。

专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(刚才的例子可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写)。

      静态方法的调用不需要实例化吧..  不实例化也就不能用多态了,也就没有所谓的父类引用指向子类实例.因为不能实例化 也就没有机会去指向子类的实例。所以也就不存在多态了。

0 0
原创粉丝点击