- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PHP面向对象-继承详解讲述
PHP继承
定义两个类:
class Book {
public $goods_name;
public $goods_price;
public $author;
public $publisher;
}
class Phone {
public $goods_price;
public $goods_name;
public $brand;
public $mode;
}
书与电话有共同的属性,可以提取
class Goods {
public $goods_name;
public $goods_price;
}
因此在书类与电话类中这两个属性可以不用写,但书与电话类中就已经没有了这两个属性
于是就用到了继承:
继承定义:如果一个对象A,使用了另一个对象B的成员,那么我们就称A对象继承了B对象
示例:
class Goods {
????public $goods_name;
????public $goods_price;
}
class Book extends Goods {
????public $author;
????public $publisher;
}
$b = new Book;
var_dump($b);
输出结果为:
object(Book)#1 (4) { [quot;authorquot;]=gt; NULL [quot;publisherquot;]=gt; NULL [quot;goods_namequot;]=gt; NULL [quot;goods_pricequot;]=gt; NULL }
语法:
使用关键字:extends 让一个类继承自另一个类
TIPS :?
继承概念体现在对象上,语法体现在类上
此时,特定的称谓:
以上的示例中:
Goods:称类为父类,基础类
Book:称为子类,扩展类
语法意义就是面向对象中的代码重用!
单继承
指的是,一个类,只能存在一个父类(基础类),不能同时继承多个类
下面的这种继承就是错误的:
class StoreBook extends Goods,Book {
????public $age = 3;
}
instanceof,是否是某类实例
体现:一个对象如果是子类的实例,同时也是父类的实例!(实例,通过该类实例化的对象)
重写,是个现象!
class Goods {
public $goods_name = ginvip;
public $goods_price;
}
class Book extends Goods{
public $goods_name = 《gin-php》;
public $author;
public $publisher;
}
$b1 = new Book;
var_dump($b1);
输出结果为:
object(Book)#1 (4) { [quot;goods_namequot;]=gt; string(13) quot;《gin-php》quot; [quot;authorquot;]=gt; NULL [quot;publisherquot;]=gt; NULL [quot;goods_pricequot;]=gt; NULL }
如果子类与父类出现同名的成员(属性方法),则在实例化子类对象时,只会得到子类中定义的成员,称之为重写!
方法也可以重写:
class Goods {
public $goods_name = ginvip;
public $goods_price;
public function SayPrice() {
echo $this-gt;goods_price;
}
}
class Book extends Goods{
public $goods_name = 《gin-php》;
public $author;
public $publisher;
public function SayPrice() {
echo amp;,$this-gt;goods_price;
}
}
$b1 = new Book;
$b1-gt;goods_price = 1234.15;
$b1-gt;SayPrice();
输出结果为:
amp;1234.15
一旦重写,父类的代码就不会执行!
但是,有些方法是一定会重写的,典型的是构造方法:
class Goods {
public $goods_name = ginvip;
public $goods_price;
public function __construct($name,$price) {
$this-gt;goods_name = $name;
$this
文档评论(0)