Java中隐藏与覆盖的区别
发布网友
发布时间:2022-04-22 11:28
我来回答
共4个回答
热心网友
时间:2023-07-14 03:04
因为静态方法不能被覆盖,如果在子类出现了同签名的就是隐藏,非静态方法称之为覆盖
区别在哪呢,比如有两个类Father和Son
public class Father {
public static void statMethod(){
}
public void nonstatMethod() {
}
}
public class Son extends Father {
public static void statMethod(){
}
public void nonstatMethod() {
}
}
如果Father father = new Son();
father.statMethod();调用的是父类的方法(隐藏)
father.nonstatMethod();调用的是子类的方法(覆盖)
热心网友
时间:2023-07-14 03:04
隐藏一般是对静态的属性和方法来说的。 你看一下下面的这段代码:
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();
}
}
覆盖就是子类的方法跟父类的方法具有完全一样的签名和参数。我们看到上面那两个类,父类的override在子类中重写了,因为有跟父类有相同的签名和参数,所以叫做覆盖,但是hide方法,因为是静态的,所以在这里叫做隐藏。
热心网友
时间:2023-07-14 03:05
隐藏与覆盖的区别?
一般应该是重载与覆盖(重写)的区别,至于隐藏我还真不知道,期待其他人的解答
热心网友
时间:2023-07-14 03:05
貌似C#里面有隐藏这一说,java没怎么听说啊