PHP 面向对象
2018-01-23 11:37
274 查看
PHP面向对象与JAVA基本相同。
变量 $this 代表自身的对象。
PHP_EOL 为换行符。
使用 new 运算符来实例化该类的对象。
例:
<?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;
// 调用成员函数,设置标题和URL
$runoob->setTitle( "W3Cschool教程" );
$taobao->setTitle( "淘宝" );
$google->setTitle( "Google 搜索" );
$runoob->setUrl( 'www.youj.com' );
$taobao->setUrl( 'www.taobao.com' );
$google->setUrl( 'www.google.com' );
// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();
$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();
?>
运行后的结果:
菜鸟教程
淘宝
Google 搜索
www.runoob.com
www.taobao.com
www.google.com
构造函数
主要用来在创建对象时初始化对象,
即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
继承
PHP
使用关键字 extends 来继承一个类,PHP
不支持多继承。
方法重写
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
访问控制
public(公有):公有的类成员可以在任何地方被访问。
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问
private(私有):私有的类成员则只能被其定义所在的类访问
接口
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分
隔多个接口的名称。
常量
自
PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。
声明类属性或方法为 static(静态),就可以不实例化类而直接访问。
静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
由于静态方法不需要通过对象即可调用,所以伪变量
$this 在静态方法中不可用。
静态属性不可以由对象通过
-> 操作符来访问。
自
PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或static。
final关键字
如果父类中的方法被声明为
final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
调用父类构造方法
PHP
不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,
需要在子类的构造方法中调用 parent::__construct() 。
例:
变量 $this 代表自身的对象。
PHP_EOL 为换行符。
使用 new 运算符来实例化该类的对象。
例:
<?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;
// 调用成员函数,设置标题和URL
$runoob->setTitle( "W3Cschool教程" );
$taobao->setTitle( "淘宝" );
$google->setTitle( "Google 搜索" );
$runoob->setUrl( 'www.youj.com' );
$taobao->setUrl( 'www.taobao.com' );
$google->setUrl( 'www.google.com' );
// 调用成员函数,获取标题和URL
$runoob->getTitle();
$taobao->getTitle();
$google->getTitle();
$runoob->getUrl();
$taobao->getUrl();
$google->getUrl();
?>
运行后的结果:
菜鸟教程
淘宝
Google 搜索
www.runoob.com
www.taobao.com
www.google.com
构造函数
主要用来在创建对象时初始化对象,
即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中
void __construct ([ mixed $args [, $... ]] )
析构函数
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。void __destruct ( void )
继承
PHP
使用关键字 extends 来继承一个类,PHP
不支持多继承。
方法重写
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
访问控制
public(公有):公有的类成员可以在任何地方被访问。
protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问
private(私有):私有的类成员则只能被其定义所在的类访问
接口
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分
隔多个接口的名称。
常量
自
PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字(如 self,parent 或 static)。
Static 关键字
声明类属性或方法为 static(静态),就可以不实例化类而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
由于静态方法不需要通过对象即可调用,所以伪变量
$this 在静态方法中不可用。
静态属性不可以由对象通过
-> 操作符来访问。
自
PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或static。
final关键字
如果父类中的方法被声明为
final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。
调用父类构造方法
PHP
不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,
需要在子类的构造方法中调用 parent::__construct() 。
例:
<?php class BaseClass { function __construct() { print "BaseClass 类中构造方法" . PHP_EOL; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); // 子类构造方法不能自动调用父类的构造方法 print "SubClass 类中构造方法" . PHP_EOL; } } class OtherSubClass extends BaseClass { // 继承 BaseClass 的构造方法 } // 调用 BaseClass 构造方法 $obj = new BaseClass(); // 调用 BaseClass、SubClass 构造方法 $obj = new SubClass(); // 调用 BaseClass 构造方法 $obj = new OtherSubClass(); ?>
相关文章推荐
- PHP面向对象的进阶学习(抽像类、接口、final、类常量)
- php学习之五(面向对象)
- PHP 面向对象
- PHP面向对象:封装--设置私有成员
- PHP面向对象1.3对象中成员的访问和构造析构函数
- php 面向对象(不知道取什么名字)
- php面向对象 字段的声明与使用
- 不错的一篇面向对象的PHP开发模式(简写版)
- php学习笔记------[php中面向对象三大特性之一[继承性]的应用]
- 深入理解PHP:高级技巧、面向对象与核心技术
- 在 PHP 中养成 7 个面向对象的好习惯
- php面向对象__get(),__set()的用法
- 课堂随笔(php面向对象)
- Php面向对象 – 继承和重写
- PHP面向对象杂谈
- PHP面向对象之解说(封装,继承,多态,引用,【const,define】)
- 在 PHP 中养成 7 个面向对象的好习惯(通过面向对象的方式改进 PHP 应用程序)
- 36. PHP面向对象
- PHP中的面向对象和面向过程的编程方法
- -PHP面向对象(OOP)编程入门-5.如何实例化对象?