第一个问题是在代码中。第二个问题是为什么静态方法不能被重写为非静态方法?第三个是为什么静态和抽象不能一起走?
class A {
public void display() {
System.out.println("Display of Class A called");
}
}
class B extends A {
public void display() {
System.out.println("Display of Class B called");
}
}
class C extends B {
public void display() {
System.out.println("Display of Class C called");
super.display(); // calls B's Display
// Is there a way to call A's display() from here?
}
}
答案 0 :(得分:3)
[B] //有没有办法从这里调用A的显示??? [/ B]
不,你不能在类层次结构中走两步。您可以在B
中实现并调用一个方法,该方法将调用A
实现。
为什么
static
方法无法被重写为非static
方法
static
方法与类相关联。多态(因此覆盖)是一个适用于对象的概念,因此不适用于它们。
为什么
static
和abstract
不能一起
出于同样的原因。 abstract
方法是一种应该在子类中实现的方法,因为子类继承了它。由于子类不继承static
方法,因此static
方法不能为abstract
。
答案 1 :(得分:0)
第一个问题:不能你不能直接调用低音类的低音类,因为在C级视图中,它不知道B类有低音类而且它是A类。所有C知道的是它有一个基类,它是B。
第二个问题:静态方法只是组织全局方法的一种巧妙方法。没有继承权。你只需将该方法放到一个类中,这样当你编写代码来调用它时,你知道在哪里找到它。
第三个问题:abstract
表示“这就是要做的课程,这里有一些基本的功能,但是我无法完成这个任务;继承我并完成剩下的工作以使其工作”。如前所述,静态方法只是一种放置“独立”方法的方法,不需要初始化,也不需要上下文。这两个人不会在一起。