1、static方法不能被重写
示例1
class Animal{
public static void walk() {
System.out.println("Animal的行走方法");
}
}
class Dog extends Animal{
public void walk() {
System.out.println("Dog的行走模式");
}
public static void main(String[] args) {
new Dog().walk();
}
}
会出现编译错误:java: com.sxhxh.Dog中的walk()无法覆盖com.sxhxh.Animal中的walk()
被覆盖的方法为static
2、static方法可以被重载
示例2
class Animal{
public static void walk() {
System.out.println("Animal的行走方法");
}
}
class Lion extends Animal{
public void walk(String s) {
System.out.println("Lion的行走模式" + s);
}
public static void main(String[] args) {
new Lion().walk("冲锋!!");
}
}
运行结果:
Lion的行走模式冲突!!
3、static方法可以重新定义
示例3
class Animal{
public static void walk() {
System.out.println("Animal的行走方法");
}
}
class Dog extends Animal{
public static void walk() {
System.out.println("Dog的行走模式");
}
public static void main(String[] args) {
new Dog().walk();
}
}
运行结果:Dog的行走模式
如果该代码去掉Dog中walk方法的static的话就变成示例1的情况,则编译不通过,
有static关键字则是在子类中进行该方法的重新定义,编译顺利通过。