rb6*_*612 5 java oop polymorphism inheritance dynamic-binding
从文档 "如果子类定义了与相同的签名在超类中一个静态方法的静态方法,那么在子类中的方法隐藏了一个超类中."
我理解方法隐藏和覆盖之间的区别.但是,很奇怪的是,子类隐藏了超类方法,因为如果你有以下内容:
public class Cat extends Animal {
public static void testClassMethod() {
System.out.println("The static method in Cat");
}
public void testInstanceMethod() {
System.out.println("The instance method in Cat");
}
public static void main(String[] args) {
Cat myCat = new Cat();
Animal myAnimal = myCat;
Animal.testClassMethod();
myAnimal.testInstanceMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
调用超类的静态方法.但是通过隐藏的定义,子类中的方法隐藏了超类中的方法.我没有看到子类是如何"掩盖/隐藏"超类静态方法,因为超类的方法是实际调用的方法.
调用超类的静态方法.
是.但这是因为您通过使用call语句中的超类名称进行限定来显式命名超类的静态方法.
如果你写了main
这样的话:
public static void main(String[] args) {
...
testClassMethod();
}
Run Code Online (Sandbox Code Playgroud)
然后你会看到被调用的Cat
版本testClassMethod
.这里,该Cat.testClassMethod
方法隐藏了该Animal.testClassMethod
方法
归档时间: |
|
查看次数: |
598 次 |
最近记录: |