我有一个名为Animal的类名称,该类包含两种方法,例如...
Class Animal
{
protected function method1(){
//some code
}
protected function method2(){
//some code
}
}
现在,我想制作两个扩展动物类的子类。一个是猫
另一个是狗,像
Class Cat extends Animal
{
}
和,
Class Dog extends Animal
{
}
现在,我想要的是,子类Cat可以访问在Animal类中定义的两个方法,但是Dog类可以访问method1,而不是method2。如何在Animal类中设置访问修饰符,以便发生这种逻辑?
参考方案
你不能那样做。它会违反Liskov substitution principle。在OOP中,extends
关键字可以读作“是...的特殊情况”。
如果您懒得阅读,here是简短版本。
另外,this lecture可能很有用。
PHP:为什么不能扩展多个类? - php当我想扩展两个父类时遇到了一种情况,但是php不允许这样做。为什么我不能extend多于一个班级,却可以implement多于一个interface。扩展许多类怎么了?在我看来,直到我解析错误之前,这似乎是一件很明显的事情。这是不好的做法吗?如果是这样,有哪些替代方案?可以使用其他语言吗? 参考方案 为什么在某些/大多数编程语言中禁止多重继承与钻石问题htt…
PHP OOP:为域实体提供“身份” - php这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Dom…
PHP-将日期插入日期时间字段 - php我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数
PHP-如何获取类的成员函数列表? - php如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友
PHP OOP概念付诸实践 - php目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…