子类是否可以继承父类的静态方法,是否可以重写父类的静态方法呈现多态性?

今天在梳理梳理知识点的时候无意间看到一个问题:
子类是否可以继承父类的的static方法?
子类是否可以重写父类的静态方法而呈现多态特性?

static特点

对象数据共享 ->被static修饰的数据不仅可以被对象访问,还可以被类名访问

  • static是一个修饰符,用于修饰成员,(成员变量,成员函数)
  • static优先于对象存在,因为static的成员随着类的加载就已经存在
  • static修饰的成员多了一种调用方式,可以被类名调用(类名.静态成员)
  • static修饰的数据是共享数据,对象中的存储是特有数据
  • -

父类代码

public class Father {

    public static void show() {
        System.out.println(" 父类的静态方法");
    }

    public static void method() {
        System.out.println("父类的method静态方法");
    }
}

子类代码

public class Son extends Father{

    public static void show() {
        System.out.println("子类的静态方法 ");
    }


    public static void main(String[] args) {

        Father father =  new Son();
        father.show();//是否重写父类静态方法,表现多态性


        Son son = new Son();
        son.show();
        son.method();//是否继承父类静态方法

    }
}

输出结果

父类的静态方法
子类的静态方法
父类的method静态方法

分析

1.father.show();//是否重写父类静态方法,表现多态性
-打印结果是“父类的静态方法 ”,可以看出子类不可以重写父类的静态方法show(),因此依旧表现出父类方法的行为特征,而没有表现出子类方法的行为特征,因此没有表现出多态性。
2.子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写的关系
3.可以看出 子类继承了父类的static方法method

结论

子类可以继承父类静态属性和静态方法,但是不可以重写父类的静态方法而表现多态性
PS:前提是父类的静态方法对子类是可见的。eg,父类方法不被private休息

猜你喜欢

转载自blog.csdn.net/Ghost_tal/article/details/80295730