我对PHP的继承没有什么困惑 - php

我有一个名为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或使用具有标准感谢页…