PHP学习—类和对象

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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值