PHP使用类继承来解决代码重复的问题
本文演示了PHP使用类继承来解决代码复制的问题,供大家参考,具体分析如下:继承与类的一个子类或多个子类的构造直接相关。要创建子类,必须在类声明中使用扩展关键字。在扩展新类名之前,父类名称在后面。
在下面的例子中,我们创建两个新的类,bookproduct和cdproduct,都继承自shopproduct类。
复制代码代码如下:< PHP
头('content-type:文本/ HTML;字符集= UTF-8);
从本文的开头/类名,首字母大写,标准化的措词
类shopproduct { / /班
公共numpages美元; / /属性声明
公共playlenth美元;
公开产权;
公共producermainname美元;
公共producerfirstname美元;
公共价格;
功能__construct($标题,$名,mainname美元,美元的价格,numpages = 0美元美元,playlenth = 0){
在title中的title属性值
美元-> producerfirstname = $名;
美元-> producermainname = $ mainname;
美元=价格=价格;
美元-> numpages = $ numpages;
美元-> playlenth = $ playlenth;
}
功能(getproducer){ / /声明的方法
回{美元-> producerfirstname -> producermainname } {美元} ;
}
功能getsummaryline(){
基地={美元美元->标题}({美元-> producermainname },);
基地= {美元美元-> producerfirstname });
返回$基础;
}
}
类cdproduct延伸shopproduct {
功能getplaylength(){
返回playlength美元->;
}
功能getsummaryline(){
基地={美元美元->标题}({美元-> producermainname },);
基地= {美元美元-> producerfirstname });
美元=:打基础的时间{美元-> playlength });
返回$基础;
}
}
类bookproduct延伸shopproduct {
功能getnumberofpages(){
返回numpages美元->;
}
功能getsummaryline(){
基地={美元美元->标题}({美元-> producermainname },);
基地= {美元美元-> producerfirstname });
美元=:页面内容的基础- {美元-> numpages });
返回$基础;
}
}
>
由于子类没有定义构造方法,父类的构造方法是shopproduct自动调用时bookproduct和cdproduct实例化的类。
子类默认继承父类的所有公共和受保护的方法和属性,但不继承私有方法和属性。后来,我们将讨论这三个关键词的作用。也就是说,我们可以称getproducer()在对象实例化的cdproduct类的方法,虽然getproducer()是shopproduct类定义。
将代码添加到上面:
复制代码如下:美元=新产品cdproduct(PHP面向对象
打印好生活:{ $产品-> getproducer()};
结果是:好的生活:郭壶
两子类继承父类的公共部分,但是请注意,BookProduct和cdproduct类覆盖getsummaryline()方法,提供他们自己的独特的实现,这表明类可以扩展和修改父类的功能。
但这种方法似乎在父类的实现是有点多余的,因为它的两个子类重写的方法,但是其他的子类可以使用其基本功能。这种方法的存在提供了客户端代码的保证:所有shopproduct物体会有getsummaryline()方法,并使用他们的getsummaryline(BookProduct和cdproduct)方法访问$标题属性。
在开始的时候,继承的是一个概念,不易理解。首先,我们知道可以通过定义一个类从其他类继承,我们保证一个类有其自由函数和函数的父类,然后是搜索功能的子类,当我们调用$产品,getproducer(),在cdproduct类并没有找到getproducer()方法,然后我们发现shopproduct类是否调用该方法,误差不。相同的访问属性是真实的。
看着shopproduct施工方法,我们会发现,我们还是在基类(父类)。它应该处理的子类的数据:bookproduct应该处理numpages美元的属性和参数;cdproduct应该处理playlength美元的属性和参数。为此,我们需要在子类中定义的构造方法。
希望本文能对大家的PHP程序设计有所帮助。