子类和继承类之间是否存在技术差异?

Ali*_*ian 6 oop inheritance class subclass

从另一个类继承的类与作为其子类的类之间是否存在技术差异?以下代码中A和B之间的区别是什么:

一个)

public class foo {
 ...
 private class bar {...}
}
Run Code Online (Sandbox Code Playgroud)

B)

public class foo { ...}

private class bar extends foo {...}
Run Code Online (Sandbox Code Playgroud)

Aar*_*lla 13

你是混合术语.子类与继承的类相同.

在示例A中,bar是一个内部类.内部类就像嵌套类型.bar可以看到所有的私人的东西foo,但它本身不是一个foo(你可以不投barfoo).


Ker*_* SB 2

在继承的情况下,您可以将派生类视为其基类。也就是说,您可以保留基类引用的集合并调用它们的方法,而无需知道实际对象是否属于任何派生类型,如果是,则属于哪种派生类型。这是一个重要的语义概念。

在成员类的情况下,内部类只是外部类的实现细节,甚至对消费者来说是不可见的。即使它是可见的,它也只是该类的一个特征foo。您可以看到,这两种情况在语义上非常不同,您必须选择最准确地代表您的实际数据模型的一种。

从技术上讲,由于各种虚函数调用,派生类的重量可能会稍重一些,但细节取决于您的语言和具体情况。