zoukankan      html  css  js  c++  java
  • JAVA中的static修饰的方法不能被重写

    可以重写静态方法,但重写后的静态方法不支持多态。

    其实static根本就没有重写之说。static方法引用的时候应该用类名来引用,而不是对象。同时static方法不参与继承,所以在继承体系里面也不存在重载的说法。

    不能被重写,例子:

    class A{
     public static void a(){
      System.out.println("a");
     }
    }
    class B extends A{
     public static void a(){
      System.out.println("b");
     }
    }
    public class Test {
       public static void main(String[] args) {
        A a = new B();
        a.a();//输出结果是a
       }
    }

    可以继承,例子:

    class A{
     public static void a(){
      System.out.println("a");
     }
    }
    class B extends A{}
     
    public class Test {
       public static void main(String[] args) {
             B.a();//输出a,证明静态方法可以被继承
       }
    }

    静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。

    java不推荐用对象调用static方法,这会使人混淆,请大家注意。

    这也是为什么abstract修饰的method是不可同时是static的原因:

    abstract修饰方法,子类需要重写去实现,主要用于各个子类的实例对象;
    static修饰方法,则方法不属于某个对象,属于class,可用class名.方法名(),进行调用;

    简单的说abstract实例对象;
    而static属于类。
    所以static方法不能是abstract方法

  • 相关阅读:
    Java 添加、验证PDF 数字签名
    Java 将PDF 转为Word、图片、SVG、XPS、Html、PDF/A
    Java 读取PDF中的文本和图片
    Java 将Word转为PDF、PNG、SVG、RTF、XPS、TXT、XML
    Java 添加、读取、删除PPT文档属性
    Java 添加、修改PPT幻灯片中的表格
    Java 转PPT为图片、PDF、SVG、XPS、ODP以及PPT和PPTX互转
    Java 添加Word脚注、尾注
    Java 添加Word目录的2种方法
    Java 添加Word页眉、页脚
  • 原文地址:https://www.cnblogs.com/cRaZy-TyKeIo/p/3457537.html
Copyright © 2011-2022 走看看