失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP面向对象程序设计高级特性详解(接口 继承 抽象类 析构 克隆等)

PHP面向对象程序设计高级特性详解(接口 继承 抽象类 析构 克隆等)

时间:2021-02-18 03:11:30

相关推荐

PHP面向对象程序设计高级特性详解(接口 继承 抽象类 析构 克隆等)

php教程|PHP开发

PHP 面向对象

php教程-PHP开发

android 评价五星 源码,ubuntu汉语拼音,tomcat怎么和DW相连,数据爬虫因子,php大数据教程学习,seo 主机lzw

静态属性

金融企业官网源码,vscode查看报文,ubuntu 没有yum,xls tomcat乱码,sqlite3 长文本,ext插件,前端流行框架有很多比如有,淘宝商品比价定向爬虫实例,php 访问父类,镇江正规seo报价,格子铺信息网站源码,如何让网页引用模板,destoon b2b模板编码转换工具lzw

输出:0 hello

手艺活网站源码,vscode里怎么打开,ubuntu 简单 实例,tomcat引用jar包,爬虫 钓鱼,php常用技术,柳州谷歌seo优化价格,seo电影网站源码购买,织梦绿色模板免费下载lzw

点评:静态属性和方法,可以通过类直接调用。

SELF

输出:

hello (1)hello (2)hello (3)

点评:self 指向当前类, this指向当前对象。self可以调用当前类的静态属性和方法。this指向当前对象。self可以调用当前类的静态属性和方法。this可以调用当前类的正常属性和方法。

常量属性

price; } // ...}$product = new ShopProduct();?>

如果没有实现getPrice方法,将会报错。

Fatal error: Class ShopProduct contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Chargeable::getPrice)

继承类与接口

抽象类

先来看一段代码

输出:

Document Object()

静态方法

group = static::getGroup();//static 静态类 } public static function create() { return new static(); } static function getGroup() { // 静态方法 return "default"; }}class User extends DomainObject {}class Document extends DomainObject { static function getGroup() { // 改变了内容 return "document"; }}class SpreadSheet extends Document { // 继承之后,group也就与document相同了}print_r(User::create());print_r(SpreadSheet::create());?>

输出:

User Object( [group:DomainObject:private] => default)SpreadSheet Object( [group:DomainObject:private] => document)

final字段

使类无法被继承,用的不多

输出:

Fatal error: Class IllegalCheckout may not inherit from final class (Checkout)

final方法不能够被重写

输出:

Fatal error: Cannot override final method Checkout::totalize()

析构函数

name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function __destruct() { // 析构函数 if ( ! empty( $this->id ) ) {// save Person dataprint "saving person\n"; } if ( empty( $this->id ) ) {// save Person dataprint "do nothing\n"; } }}$person = new Person( "bob", 44 );$person->setId( 343 );$person->setId( \ ); // 最后执行析构函数,使用完之后执行?>

输出:

do nothing

__clone方法

克隆的时候执行

name = $name; $this->age = $age; } function setId( $id ) { $this->id = $id; } function __clone() { // 克隆时候执行 $this->id = 0; }}$person = new Person( "bob", 44 );$person->setId( 343 );$person2 = clone $person;print_r( $person );print_r( $person2 );?>

输出:

Person Object( [name:Person:private] => bob [age:Person:private] => 44 [id:Person:private] => 343)Person Object( [name:Person:private] => bob [age:Person:private] => 44 [id:Person:private] => 0)

再看一个例子

balance = $balance; }}class Person { private $name; private $age; private $id; public $account; function __construct( $name, $age, Account $account ) { $this->name = $name; $this->age = $age; $this->account = $account; } function setId( $id ) { $this->id = $id; } function __clone() { $this->id = 0; }}$person = new Person( "bob", 44, new Account( 200 ) ); // 以类对象作为参数$person->setId( 343 );$person2 = clone $person;// give $person some money$person->account->balance += 10;// $person2 sees the credit tooprint $person2->account->balance; // person的属性account也是一个类,他的属性balance的值是210// output:// 210?>

点评:学习还是能够开拓大脑的,今天终于明白为什么有多个箭头的概念了$person->account->balance。这里的account属性是一个对象。

__toString

getName()." (age "; $desc .= $this->getAge().")"; return $desc; }}$person = new Person();print $person; // 打印时候集中处理// Bob (age 44)?>

点评:必须是print或echo时才有效,print_r就输出对象。

Person Object()

更多PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)相关文章请关注PHP中文网!

如果觉得《PHP面向对象程序设计高级特性详解(接口 继承 抽象类 析构 克隆等)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。