关于java中的覆盖和隐藏
覆盖和隐藏到底是怎么回事?我在网上查阅了一些资料,但还是没弄明白。谁能给我个确切而肯定回答?
-------------
参考1:http://topic.csdn.net/t/20050821/00/4221052.html
public class classA{
public void methodOne(int i){ }
public void methodTwo(int i){ }
public static void methodThree(int i){ }
public static void methodFour(int i){ }
}
public class classB extends classA{
public static void methodOne(int i){ }
public void methodTwo(int i){ }
public void methodThree(int i){ }
public static void methodFour(int i){ }
}
1 问那些方法隐藏了父类的方法?
2 问那些方法覆盖了父类的方法?
答案:
1 methodFour
2 methodTwo
其他两个方法编译是无法通过的,要么给methodThree,methodOne加上static,要么去掉static.
-----------
参考2:http://topic.csdn.net/t/20051205/08/4437722.html
覆盖和重载完全是两码事!覆盖就是子类的方法跟父类的方法具有完全一样的签名和参数,而重载是签名相同参数不同,可以是同一个类也可以是子类跟父类!
隐藏一般是对成员变量和静态方法来说的,网上的代码:
class Planet {
public static void hide() {
System.out.println("The hide method in Planet.");
}
public void override() {
System.out.println("The overrid method in Planet.");
}
};
public class Earth extends Planet {
public static void hide() {
System.out.println("The hide method in Earth.");
}
public void override() {
System.out.println("The override method in Earth.");
}
public static void main(String[] args) {
Earth myEarth = new Earth();
Planet myPlanet = (Planet) myEarth;
myPlanet.hide();
myPlanet.override();
}
}