PHP学习—类和对象

mac2024-01-24  42

PHP类和对象

类 定义了一件事物的抽象特点,类的定义包含了数据的形式以及对数据的操作。对象 类的实例成员变量 定义在类内部的变量。成员变量的值对外不时可见的,可以通过成员函数访问,当类被实例化成为对象后,成员变量可称为对象的属性。成员函数 定义在类的内部,可用于访问对象的数据。继承 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。使用extends关键字父类 一个类被其他类继承,可将该类成为父类,也可称为基类或者超类。子类 一个类继承其他类称为子类,也可称为派生类。 //声明一个类 <?php class Site { var $url; var $title; function setUrl($par) { $this->url=$par; } function getUrl() { echo $this->url . PHP_EOL; } function setTitle($par) { $this->title=$par; } function getTitle() { echo $this->title . PHP_EOL; } } //创建对象 $runoob = new Site; $taobao = new Site; $google = new Site; //调用成员函数 $runoob->setTitle('菜鸟教程'); $taobao->setTitle('淘宝'); $google->setTitle('Google 搜索'); $runoob->setUrl('www.runoob.com'); $taobao->setUrl('www.taobao.com'); $google->setUrl('www.google.com'); $runoob->getTitle(); $taobao->getTitle(); $google->getTitle(); $runoob->getUrl(); $taobao->getUrl(); $google->getUrl(); /*运行结果 菜鸟教程 淘宝 Google 搜索 www.runoob.com www.taobao.com www.google.com */

PHP构造函数

构造函数是一种特殊的方法。用来在创建对象时初始化对象,为对象的属性赋初始值,在创建对象的语句中与new运算符一起使用

//将上面的代码改为使用构造函数新建对象 <?php class Site { var $url; var $title; function __construct($par1,$par2) { $this->url=$par1; $this->title=$par2; } function getUrl() { echo $this->url . PHP_EOL; } function getTitle() { echo $this->title . PHP_EOL; } } $runoob = new Site('菜鸟教程','www.runoob.com'); $taobao = new Site('淘宝','www.taobao.com'); $google = new Site('Google 搜索','www.google.com'); $runoob->getTitle(); $taobao->getTitle(); $google->getTitle(); $runoob->getUrl(); $taobao->getUrl(); $google->getUrl(); //运行结果同上

PHP析构函数

析构函数与构造函数相反,当对象结束其生命周期后,系统会自动执行析构函数

PHP访问控制

PHP对属性或方法的访问控制,是通过在前面添加关键字public(公有),**protected(受保护)或private(私有)**来实现的。

public(公有):公有类成员可以在任何地方被访问protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。private(私有):私有的类成员则只能被其定义所在的类访问。

属性的访问控制

<?php class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo '<br>'; echo $this->protected; echo '<br>'; echo $this->private; echo '<br>'; } } $obj= new MyClass(); echo $obj->public; echo '<br>'; //这样访问会报错 echo $obj->protected; //这样访问也会报错 echo $obj->private' echo $obj->printHello(); class MyClass2 extends MyClass { function printHello1() { echo $this->public; echo '<br>'; echo $this->protected; echo '<br>'; echo $this->private; echo '<br>'; } } /* MyClass2是MyClass的子类,MyClass2继承了MyClass的成员变量和成员函数,但是对于父类的private成员变量,只能用父类的成员函数去访问。 */ $obj2= new Myclass2(); //调用父类的printHello()函数 $obj2->printHello(); //调用子类的printHello1()函数 $obj2->printHello1();

方法的访问控制

类中的方法可以被定义为公有、私有或受保护。如果没有设置,则该方法默认为公有。

<?php class MyClass { public function __construct(){} public function MyPublic(){ echo "public"; echo "<br>"; } protected function MyProtected(){ echo "protect"; echo "<br>"; } private function MyPrivate(){ echo "private"; echo "<br>"; } function Foo() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); } } $myclass = new MyClass(); $myclass->MyPublic(); //在类外访问保护方法,会产生一个致命错误 //$myclass->MyProtected(); //在类外访问私有方法,会产生一个知名错误 //$myclass->MyPrivate(); $myclass->Foo(); class MyClass2 extends MyClass { function foo2() { $this->MyPublic(); $this->MyProtected(); //在子类中访问父类的私有方法,会产生一个致命错误 //$this->MyPrivate(); } } $myclass2 = new MyClass2; $myclass2->MyPublic(); $myclass2->foo2();
最新回复(0)