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

发布于:2021-07-24 21:52:26

今天在梳理梳理知识点的时候无意间看到一个问题:
子类是否可以继承父类的的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修饰


相关推荐

最新更新

猜你喜欢