Java中的继承与现实世界中的继承有何不同?

3
我在面试中遇到了这个问题。面试官所谓的现实世界继承是指后代继承一些财产,一些父母的特征等等。
我觉得这个问题可能存在争议,不太适合作为面试问题。
这个问题能被回答得好吗?

3
“something that can be debated” 是一个很好的面试问题。 - blank
1
我不确定这是否适合在程序员上发布,但至少比在这里更接近(至少在我看来是这样)。他/她可能希望得到的答案是,“现实世界”的继承甚至不能接近尊重LSP。 - Jerry Coffin
据我所知,Java类的真正父权从未引起争议。如果有争议,也许会更有趣。 - emory
5个回答

10

是的,这个问题可以被很好地回答,我认为这是一个很好的面试问题;如果您能回答这个问题,那么说明您理解了面向对象编程的基本概念之一。

在面向对象编程中,“继承”与生物学上的继承完全不同。面向对象编程中的“继承”意味着专业化,并暗示了一个是一个的关系:子类的一个实例 其父类实例的一种特殊形式。

例如,假设你有一个class Cat extends Animal。一只猫 一只动物。

有时人们在类继承的示例中使用“父母”和“孩子”这些词,其中他们会有一个class Parent和一个class Child extends Parent。这是错误的:孩子 不是(一种特殊类型的)父亲。


呵呵... class Child extends Parent... 我从未听过这个例子来解释继承。但这有点有趣。想象一下,如果所有孩子一出生就成为父母,人口增长会怎样...顺便说一下,我肯定认为这就是面试官想要的答案。我不认为他在寻找关于多重继承的答案。 - Alderath
1
@Alderath 我是一个Java编程论坛的版主,经常会发生这样的情况,人们会问一个带有class Child extends Parent示例的问题... - Jesper

1
这是一个非常模糊的问题。我能想到的唯一一件事是Java只从一个父类继承,而现实生活中的继承可以有多个。尽管人们使用接口作为解决方法,但这是有争议的。

接口只允许对象以多态方式行为。这不是多重继承。 - kasavbere

1
在现实世界中,多重继承是被允许的。例如,在动物中,子代会继承双亲的基因。然而,在Java中,一个子类只能有一个父类。

0
在我的文化中,孩子们会继承他们父亲的姓氏(对于 Java 极客而言,这个姓氏有点像包名)。父亲是一种特殊的超类,母亲是另一种特殊的超类。每个孩子都有一个父亲和一个母亲。
在 Java 中,类可以拥有任何包名(在标准限制内),并且有一个超类和多个(0、1 或更多)超接口。

0
在Java中,继承是一种属性,通过该属性,一个类可以扩展或继承其他类的属性。因此,如果您以现实生活中的继承为例,儿子会从父亲和母亲那里继承DNA品质的混合物。 因此,如果您要问现实生活中的继承和Java继承之间的区别,我发现最大的区别是,在Java中,您无法继承多个继承类,而在现实生活中,多重继承是可能的。
否则,您还可以将现实生活中的财富和财产视为Java中的多级继承,其中您从子类继承超类的属性,然后在不同级别传递它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接