java继承误解

时间:2014-03-30 17:12:24

标签: java multiple-inheritance

第一个问题是在代码中。第二个问题是为什么静态方法不能被重写为非静态方法?第三个是为什么静态和抽象不能一起走?

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? 
    }  
}

2 个答案:

答案 0 :(得分:3)

  

[B] //有没有办法从这里调用A的显示??? [/ B]

不,你不能在类层次结构中走两步。您可以在B中实现并调用一个方法,该方法将调用A实现。

  

为什么static方法无法被重写为非static方法

static方法与类相关联。多态(因此覆盖)是一个适用于对象的概念,因此不适用于它们。

  

为什么staticabstract不能一起

出于同样的原因。 abstract方法是一种应该在子类中实现的方法,因为子类继承了它。由于子类不继承static方法,因此static方法不能为abstract

答案 1 :(得分:0)

第一个问题:不能你不能直接调用低音类的低音类,因为在C级视图中,它不知道B类有低音类而且它是A类。所有C知道的是它有一个基类,它是B。

第二个问题:静态方法只是组织全局方法的一种巧妙方法。没有继承权。你只需将该方法放到一个类中,这样当你编写代码来调用它时,你知道在哪里找到它。

第三个问题:abstract表示“这就是要做的课程,这里有一些基本的功能,但是我无法完成这个任务;继承我并完成剩下的工作以使其工作”。如前所述,静态方法只是一种放置“独立”方法的方法,不需要初始化,也不需要上下文。这两个人不会在一起。