-2

一个理论问题:是否可以从超类 A 创建一个子类 B,该超类 A 继承所有 A 的实例变量/方法,除了来自超类 A 的特定实例变量/方法?

4

4 回答 4

6

这种情况表明 A 包含太多,不能成为一个好的基类。

创建一个包含 A 实现的那些部分的 C 类,您希望这些部分通常对继承有用。让 A 和 B 都扩展 C,专门针对他们的要求。C可以是抽象的。

于 2013-07-23T02:47:21.623 回答
4

不。如果 B 继承自 A,它会继承 A 的所有内容。(尽管它可以覆盖A 提供的方法实现。)

但是,您可以使用组合而不是继承将 A 包装在 B 中。在 B 中,仅公开您要公开的特定实例方法。

于 2013-07-23T02:57:18.697 回答
-1

需要明确的是,B 将继承 A 的方法,而不包括 A 的实例变量。

如果您希望B不继承A的一个特定方法或变量,您可以声明最终关键字。

于 2013-07-23T02:43:37.797 回答
-2

如果您不想继承,请将它们设为私有。

于 2013-07-23T02:41:26.920 回答