- *Java中子类能否重写(覆盖)父类的静态方法? 答案是:子类不可以重写父类中声明为静态的方法
- *因为静态方法在类加载的时候就与该类绑定到一起了,子类可以定义与父类同名的静态方法,但是这却不能称作是方法的覆盖。
*平时我们在网上看到的“编译看左边,运行看右边”这句话是对多态而言的,
*而静态方法并不适合,方法覆盖通常和多态联合起来使用。
子父类之间:
* 私有方法不能继承,所有不能覆盖
* 构造方法不能继承,所有不能覆盖
* 静态方法不存在覆盖【学过多态理解的会更深】,可以继承
* 覆盖只针对方法,不谈属性
class Father {
public void method() {
System.out.println("父类普通方法");
}
/*
* 定义父类的静态方法
*
*/
public static void static_info() {
System.out.println("父类的静态方法");
}
}
class Son extends Father {
public void method() {
System.out.println("子类普通方法");
}
/*
* 定义子类的静态方法
*/
// @Override
public static void static_info() {
System.out.println("子类的静态方法");
Father.static_info();// 调用父类的静态方法,“类名.”方式
}
}
/*
* 测试类
*/
public class StaticTest {
public static void main(String[] args) {
Father f1 = new Son();
f1.method();
f1.static_info();
Son s1 = new Son();
s1.method();
s1.static_info();
}
}
}
运行结果是: