我正在用 PHP 学习 OOP,我不太明白继承和类对象之间的区别。我将举一个关于我当前项目的例子。
我有一个类class connectPDO{},一个单例,用于连接到数据库。
有一个类class Utility{},在这个类中我有一些辅助方法可以在页面上显示消息,或者打印数组,或者做一些其他的小事情。
有一个类class ProductsModel{},它负责与产品相关的一切(显示所有产品、编辑、删除……等等)。
所以,在课堂class ProductsModel{}上,我有以下内容:
class ProductsModel{
private $_pdo;
private $systemMessage;
function __construct() {
$this->_pdo = connectPDO::getInstance();
$this->systemMessage = new Utility();
}
function delete($id) {
//....что-то делаем...
return $this->systemMessage->response('Продукт удален');
}
}
为了连接到基础,我创建了一个类的对象class connectPDO{},因为它似乎不能被继承。对于一个class Utility{}有消息输出方法的类,我也做了一个对象,因为我更容易传递数据来显示消息,而不需要任何继承。
请解释继承类和在必要时创建新对象之间的区别。继承和创建类对象有什么好处
以任何方式比较继承和类对象都是绝对不正确的。这是两个完全不同的实体。
继承是原则。
一个类对象是……一个对象。
让我们以 Jean-Claude 的评论为例。
有一类“家具”。此类描述了所有家具共有的一些属性以及可以对家具执行的操作(方法)。
属性:材料、重量、尺寸、颜色等。
方法:组装、拆卸、分解、吊起等。
还有一个类“Stupes”,它具有“Furniture”的所有属性和方法,但除此之外,还有自己独特的仅与“Chairs”相关的属性和方法。例如,腿的数量,背部的存在。
实际上,“椅子”类继承自“家具”类。
现在想象一下您现在正坐在一把混凝土椅子上——这正是“椅子”类的对象。
在你的情况下:
$this->_pdo 是一个 PDO 类对象
$this->systemMessage - Utility 类的一个对象
继承主要用于两种情况:
你有许多有很多共同点的实体。例如,您从 Yandex 地图中解析“交通事件”。然后你这样做:
并从中继承特定类“事故”、“道路工程”、“凸轮”等。
您想要扩展库类的功能。例如,你真的希望 mysqli 对象有一个 printError 方法
PS 总的来说,继承要谨慎使用,因为如果你得意忘形,你很容易做一些你永远也赚不到的东西,一个地方的小改正,就会拖垮整个应用程序的逻辑。