Java的静态方法不能被重写(详解!) |
您所在的位置:网站首页 › 说明文介绍旅游景点 › Java的静态方法不能被重写(详解!) |
答案很明确:java的静态方法不能被重写!
静态方法,可以通过类直接调用(是属于类的方法,静态方法在代码中的调用方式一般形式是:Math.abs(); 当然通过引用该类型对象的变量也可以调用,只是通常不这样使用); 实例方法,只能通过对象调用; 重写的目的在于父类引用可以根据子类对象的运行时实际类型不同而调用不同实现代码,从而表现出多态。并且,静态方法无需创建对象即可使用,而重写的方法发挥作用,需要父类引用,和(不同的)子类对象。 千言万语,不如代码: class A{ public static show(){ System.out.println(" Static Method of A"); } } class B extends A{ public static show(){ System.out.println("Static Method of B"); } }结果,很明显了。如果是重写的话,x.show();的运行结果应该是Static Method of B,但实际上是“Static Method of A”。x.show(); 调用的是变量x所声明类型 “A“中的方法,并不是x运行时所引用对象的实际类型“B”中的方法。 还有一点值得注意,我们提到使用变量名(而不是类型名)的方式调用静态方法,调用的静态方法和变量声明的类型有关; 如果该变量所声明的类及父类中都包含相同的静态方法,则调用该变量所声明的类的静态方法,可以理解为从父类继承来的静态方法被隐藏了,但是如果该变量所声明的类中不包含,它的父类中包含该静态方法,则变量实际调用的是从父类继承来的静态方法。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |