第12章-面向对象基础_第1页
第12章-面向对象基础_第2页
第12章-面向对象基础_第3页
第12章-面向对象基础_第4页
第12章-面向对象基础_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆工程职业技术学院汪应PHP根底开发第12章面向对象根底01面向对象的根本概念02类的声明

03类的实例化04面向对象的封装

05

面向对象的继承

06

static关键字

07

抽象类和接口

08

面向对象实现多态09

面向对象的其他关键字

10

面向对象的常用魔术方法

1面向对象的根本概念主要内容

对象

面向对象的特点

010203类类是属性和方法的集合,是面向对象编程方式的核心和根底,通过类可以将零散的用于实现某项功能的代码进行有效管理。对象实例化创立的数据库连接类,调用数据库连接类中的方法,完成与数据库的连接操作。面向对象的特点〔1〕封装性:就是将一个类的使用和实现分开,只保存有限的接口〔方法〕与外部联系。〔2〕继承性:是派生类〔子类〕自动继承一个或多个基类〔父类〕中的属性与方法,并可以重写或添加新的属性或方法。继承这个特性简化了对象和类的创立,增加了代码的可重用性。〔3〕多态性:是指同一个类的不同对象,使用同一个方法可以获得不同的结果。多态性增强了软件的灵活性和重用性。2类的声明主要内容

定义类

成员属性

0102

成员常量

成员方法

0304在PHP中,使用关键字class加类名的方式定义类,然后用大括号包裹类体,在类体中定义类的属性和方法。定义类<?phpclassConnDB{

//…}?>权限修饰符class类名{

类体;}语法定义ConnDB类成员属性

在类中直接声明的变量称为成员属性。成员属性的声明必须用关键字来修饰,例如,public、protected、private等。classConnDB{

var$dbtype;

var$host;

var$user;

var$pwd;

var$dbname;

var$debug;

var$conn; }成员常量

在类中定义常量使用关键字const。constPI=3.14159;常量的输出不需要实例化对象,直接由类名+常量名调用即可。类名::常量名格式成员方法

在类中声明的函数称为成员方法。classConnDB{

functionConnDB(){

//方法体

}

functionGetConnId(){

//方法体

}

functionCloseConnId(){

$this->conn->Disconnect();

}}3

类的实例化主要内容对象的创立

访问类中的成员“$this〞和“::〞操作符010203

构造方法和析构方法04对象的创立$变量名=new类名称([参数]);语法PHP中使用关键字new来创立一个对象。一个类可以实例化多个对象,每个对象都是独立的。$connobj1=newConnDB();$connobj2=newConnDB(); $connobj3=newConnDB();访问类中的成员$变量名=new类名称([参数]);$变量名->成员属性=值;$变量名->成员属性;$变量名->成员方法;语法使用特殊的运算符号“->〞访问类中的成员。“$this〞和“::〞操作符使用$this变量可以引用该对象的其他方法和属性,并使用“->〞作为连接符。“$this〞操作符$this->属性名;$this->方法名;“$this〞和“::〞操作符操作符“::〞可以在没有声明任何实例的情况下访问类中的成员。“::〞操作符关键字::变量名/常量名/方法名语法这里的关键字分为三种情况:parent关键字:可以调用父类中的成员变量、成员方法和常量。self关键字:可以调用当前类中的静态成员和常量。类名:可以调用本类中的变量、常量和方法。构造方法和析构方法

构造方法function__construct([mixedargs[,…]]){ //方法体}语法构造方法和析构方法

析构方法function__destruct(){ //方法体,通常是完成一些在对象销毁前的清理任务}语法4面向对象的封装主要内容

公共成员关键字public

私有成员关键字private

保护成员关键字protected010203公共成员关键字public公共成员就是可以公开的、没有必要隐藏的数据信息。可以在程序的任何地点〔类内、类外〕被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员。对于成员方法,如果没有写关键字,那么默认就是public。私有成员关键字private

被private关键字修饰的变量和方法,只能在所属类的内部被调用和修改,不可以在类外被访问,即使是子类也不可以。

classBook{ private$bookName="PHP从入门到实践"; publicfunctionsetName($bookName){ $this->bookName=$bookName; } publicfunctiongetName(){ return$this->bookName; }}$book=newBook(); $book->setName("PHP自学视频教程");echo"正确操作私有变量:";echo$book->getName();echo"<br>错误操作私有变量:";echo$book->bookName; //直接访问私有变量出现错误保护成员关键字protected被protected修饰的类成员,可以在本类和子类中被调用,其他地方那么不可以被调用。classCar{ protected$carName="奥迪系列";}classSmallCarextendsCar{ publicfunctionsay(){ echo"调用父类中的属性:".$this->carName; }}$car=newSmallCar();$car->say();echo$car->carName; //直接访问保护变量出现错误

5

面向对象的继承主要内容

继承关键字extends

子类调用父类的成员方法0102

覆盖父类方法03继承关键字extendsclass子类名称extends父类名称{ //子类成员变量列表

function成员方法(){ //子类成员方法

//方法体

} //省略其他方法}语法子类调用父类的成员方法

通过parent::关键字也可以在子类中调用父类中的成员方法。parent::父类的成员方法(参数);语法覆盖父类方法覆盖父类方法的关键就是在子类中创立与父类中相同的方法,包括方法名称、参数和返回值类型。如果父类和子类中都定义了构造方法,当子类的对象被创建后,将调用子类的构造方法,而不会调用父类的构造方法。说明6

static关键字主要内容

静态属性

静态方法0102静态属性

静态属性就是使用关键字static修饰的成员属性。类名称::$静态属性名称语法如果要在类内部的成员方法中访问静态属性,那么在静态属性的名称前加上操作符“self::〞即可。静态方法

静态方法就是通过关键字static修改的成员方法。类名称::静态方法名称([参数1,参数2,……])语法静态方法在对象不存在的情况下可以使用类名来访问。在静态方法中只能访问静态成员,而在非静态方法中可以使用类名或self关键字访问静态成员。注意7

抽象类和接口主要内容

抽象类

接口0102抽象类抽象类使用abstract关键字来声明。abstractclass抽象类名称{ //抽象类的成员变量列表

abstractfunction成员方法1(参数); abstractfunction成员方法2(参数); }语法接口

接口的声明interface接口名称{ //常量成员

//抽象方法;}语法

接口类通过interface关键字来声明。interfaceOne{ constCONSTANT='CONSTANTvalue'; functionFunOne();}echoOne::CONSTANT;接口

接口的应用在子类中继承接口使用implements关键字。如果要实现多个接口的继承,那么每个接口之间使用逗号“,〞连接。8

面向对象实现多态主要内容

通过继承实现多态

通过接口实现多态0102通过继承实现多态【实例】创立一个抽象类type,用于表示各种交通方法,然后让子类继承这个type类。通过接口实现多态

【实例】定义接口Type,并定义一个空方法go_type()。然后定义Type_car和Type_Bus子类继承接口Type。最后通过instanceof关键字检查对象是否属于接口Type。9

面向对象的其他关键字主要内容

final关键字

clone关键字0102

instanceof关键字03final关键字被final修饰过的方法在子类中不可以进行重写,也不可以被覆盖。finalclassclass_name{finalfunctionmethod_name()}格式clone关键字

克隆对象$克隆对象名称=clone$原对象名称;语法

对象的克隆可以通过关键字clone来实现。clone关键字

克隆副本对象的初始化魔术方法“__clone()〞可以为克隆后的副本对象重新初始化。它不需要任何参数,其中自动包含$this和$that两个对象的引用。instanceof关键字

instanceof操作符可以检测当前对象是属于哪个类。ObjectNameinstanceofClassName语法10

面向对象的常用魔术方法主要内容

__set()和__get()方法

__isset()和__unset()方法

__call()方法010203

__toString()方法04

__autoload()方法05__set()和__get()方法

__set()方法:在程序运行过程中为私有的成员属性设置值,它不需要任何返回值。__get()方法:在程序运行过程中,在对象的外部获取私有成员属性的值。__isset()和__unset()方法魔术方法__isset()的作用就是帮助isset()函数检测私有成员属性。bool__isset(stringname)语法__unset()方法帮助unset()函数在类的外部删除指定的私有成员属性。void__unset(stringname)语法__call()方法__call()方法的作用是:当程序试图调用不存在或不可见的成员方法时,PHP会先调用__call()方法来存储方法名及其参数。__toString()方法魔术方法__toString()的作用是:当使用echo或print输出对象时,将对象转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论