1700440977
编写高质量代码:改善Java程序的151个建议 建议33:不要覆写静态方法
1700440978
1700440979
我们知道在Java中可以通过覆写(Override)来增强或减弱父类的方法和行为,但覆写是针对非静态方法(也叫做实例方法,只有生成实例才能调用的方法)的,不能针对静态方法(static修饰的方法,也叫做类方法),为什么呢?我们先看一个例子,代码如下:
1700440980
1700440981
public class Client{
1700440982
1700440983
public static void main(String[]args){
1700440984
1700440985
Base base=new Sub();
1700440986
1700440987
//调用非静态方法
1700440988
1700440989
base.doAnything();
1700440990
1700440991
//调用静态方法
1700440992
1700440993
base.doSomething();
1700440994
1700440995
}
1700440996
1700440997
}
1700440998
1700440999
class Base{
1700441000
1700441001
//父类静态方法
1700441002
1700441003
public static void doSomething(){
1700441004
1700441005
System.out.println(“我是父类静态方法”);
1700441006
1700441007
}
1700441008
1700441009
//父类非静态方法
1700441010
1700441011
public void doAnything(){
1700441012
1700441013
System.out.println(“我是父类非静态方法”);
1700441014
1700441015
}
1700441016
1700441017
}
1700441018
1700441019
class Sub extends Base{
1700441020
1700441021
//子类同名、同参数的静态方法
1700441022
1700441023
public static void doSomething(){
1700441024
1700441025
System.out.println(“我是子类静态方法”);
[
上一页 ]
[ :1.700440976e+09 ]
[
下一页 ]