0

如果类 B 继承自类 A,那么在继承中使用时,类 B 是否总是必须是 A 的子类型?

我在想,当 B 不是 A 的子类型时,是否可以使用继承为 B 提供额外的代码?

4

2 回答 2

0

如果:

class B extends A

ThanB根据定义是 的子类型A

如果你不想这样,你可以使用 PHP 的traits,它基本上是实现的接口

于 2012-06-11T17:18:18.753 回答
0

如果 typeA继承自B,这意味着两件事:

  1. 类 A 将能够使用类 B 中的公共和受保护的静态方法,而无需指定类名,并且类 A 的对象将隐式包含来自 B 的所有公共和受保护的类成员,而无需重新指定它们。
  2. 任何接受“B”类型对象的代码在编译时都将接受“A”类型的对象,“A”类的对象将能够对自己使用“B”类的公共和受保护的实例方法。

接口本质上体现了概念#2 但不是#1(因为接口没有静态方法,并且没有可以隐式使用而无需指定它们的成员)。没有#2,就没有实现#1的内置方法;#1 没有#2 的唯一显着好处是节省打字。

于 2012-06-11T17:15:24.263 回答