假设我有 2 节课
class BaseClass {
...
}
class SomeClass extends BaseClass {
}
现在我想创建第三个类,它只会扩展 SomeClass,但不会从 BaseClass 获得任何东西。这甚至可能吗?
我正在使用 webdriver 编写 Selenium 测试,并希望根据 DB 或 WebServices 检查来自 Selenium 的数据,但不想加载整个框架,只是我们的一些库
你不能。这不是继承的工作方式。从 SomeClass 继承的类将始终继承它的所有属性和方法,包括从 BaseClass 继承的 SomeClass 的属性和方法。您可以通过可见性限制对它们的访问,但只能从私人过度保护到公开,而不是相反,例如,您可以放松可见性,但不能收紧它。
请参阅 PHP 手册中有关继承和可见性的章节:
另一种选择是在 SomeClass 的实例周围使用某种 Facade 来控制对 SomeClass 中可访问的属性和方法的访问,例如假设您的 SomeClass 有一个方法 foo() 并从 BaseClass 继承 bar(),您可以这样做
class LimitedAccess
{
private $instance;
public function __construct(SomeClass $someClass)
{
$this->instance = $someClass
}
public function foo()
{
return $this->instance->foo;
}
}
然后你可以通过这个 Facade 有效地阻止访问 BaseClass::bar() 的所有访问。请注意,这不会以任何方式更改继承层次结构。它只是控制访问。
想想人类......你有母亲,她有母亲......你不能成为你母亲的儿子,而不是你祖母的孙子......
同样是在 PHP
当 Class 扩展其他它的 AWAYS 时,他的孩子......
如果您在要限制为从类调用PROTECTED
的方法上放置访问修饰符,则绝对可以这样做。BaseClass
Third