在java中子类可以继承父类的成员方法,并且可以重写父类的成语方法,但是如果是父类中有一个静态方法,通过继承他的子类可以继承这个静态方法,但不可以重重写这个父类方法。
public class Test3 {
public static void main(String[] args) {
Temp2 tt= new Temp2();
tt.method1();
//输出 静态方法1
}
}
class Temp1{
public static void method1() {
System.out.println("静态方法1");
}
}
class Temp2 extends Temp1{
}
以上案例说明:静态方法是可以被继承的;
现在我们尝试在子类中重写父类的静态方法,在进行测试
public class Test3 {
public static void main(String[] args) {
Temp1 tt= new Temp2();
tt.method1();
//输出 静态方法1
}
}
class Temp1{
public static void method1() {
System.out.println("静态方法1");
}
}
class Temp2 extends Temp1{
public static void method1() {
System.out.println("子类方法1");
}
}
将子类对象向上转型指向父类引用的时候,发现只是调用的父类的method1方法。
所以静态方法不可以被重写。
这就说明:父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性。
可以通过创建对象分别指明调用的是那个静态方法。
public class Test3 {
public static void main(String[] args) {
Temp1 tt= new Temp1();
tt.method1(); //静态方法1
Temp2 tt2 = new Temp2();
tt2.method1(); //子类方法2
}
}
class Temp1{
public static void method1() {
System.out.println("静态方法1");
}
}
class Temp2 extends Temp1{
public static void method1() {
System.out.println("子类方法1");
}
}