Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 继承链的双向行走_Java_Inheritance - Fatal编程技术网

Java 继承链的双向行走

Java 继承链的双向行走,java,inheritance,Java,Inheritance,对不起,如果我在措辞上做得不好,我会尽力的。在面向对象编程中,is-a关系常用于讨论中(讨论过?不知道怎么说)。然而,在继承链的上游是否有一个有用的目的?从孩子开始,然后一路走回来?我能想到的唯一情况是这样的: public class A { public void sayHi(){ System.out.println("Hi, from A"); } } public class B extends A{ public void sayHi(){

对不起,如果我在措辞上做得不好,我会尽力的。在面向对象编程中,
is-a
关系常用于讨论中(讨论过?不知道怎么说)。然而,在继承链的上游是否有一个有用的目的?从孩子开始,然后一路走回来?我能想到的唯一情况是这样的:

public class A {
    public void sayHi(){
        System.out.println("Hi, from A");
    }
}

public class B extends A{
    public void sayHi(){
        System.out.println("Hi, from B");
    }
}
public class C extends B{
    //no overriden version for C
}
在这里,您沿着链查找最接近的
sayHi
版本,对于object
myObject
,它将驻留在
B

A myObject = new C();
myObject.sayHi(); //Hi, from B
在继承链中,还有其他有用的方法来分析关系吗

注意:


虽然它可能不会产生影响,但我是从Java的角度提出这个问题的

当您需要分析附加到超类的元数据时,这会很有用


对于两个具体示例,数据库类(如JPA实体和Spring数据文档)通常在基类上有一些核心元数据,如要使用的MongoDB集合,以及关于具体子类的附加信息。此外,服务对象(如SpringMVC控制器)可能在基类上列出映射或安全注释。在这两种情况下,容器都需要向上遍历层次结构以合并适当的规则

从孩子开始,然后一路走回来,这实际上只是一个直接的子类型。例如,如果您在
C
中重写了该方法,您将无法通过
C
获得
A
的实现。是的,我的问题是向继承链上走有什么用途?我给出的示例是对对象调用正确的方法,但是还有其他用途吗@SotiriosDelimanolis抱歉,这可能还不清楚