PHP菜鸟笔记(2)—面向对象部分

起初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现

(OOP,Object Oriented Program)。

面向对象有三大特点:封装、继承、多态。

1、  使用class创建类:

格式:class ClassName{  }

使用new对象实例化:

格式:new ClassName;

2、  对象初始化:

我们在创建一个类有时候需要初始化一些操作,这个时候我们需要使用初始化函数,在PHP5中有两种初始化方法

a.同名法初始化,即建立一个与类名相同的对象方法。

例如:

class MyPc{
function MyPC ( ) {
初始化操作
}}

b.魔术方法名初始化,在对象方法名前加“__”。

例如:

class MyPc{
function __construct() {
初始化操作
}}

3、  继承

利用extends函数进行类的继承(需要注意的是php语言编程只能是单一继承,不能像C#、asp.net、C++那样多继承)。

例如:

Class B extends A{……}

当子类中出现与父类同名的方法,使用该子类时,同名的方法将被重载,覆盖父类同名的方法。

此时如果需要调用父类中同名方法的值,有下面两种方式:

function fun(){
return A::fun().”son”;  //”A”为父类名,fun()为同名方法,”son”为子类方法值
}
function fun(){
return Parent::fun().”son”;
}

4、  封装

使用范围 Public(公共属性) Protected Private
全局 X X
继承 X
本类

__get()访问封装与__set()设置封装:

例如:利用__get()访问封装

Class A{
Private $a;   private $b;
Function __get($n){
Return $this->$n;  //此处可返回警告,或无返回值
}}
$d=new A;
$d->a;   //此时访问$a会立即触发__get()

例如:利用__set()设置封装

Class A{    //限制$a的赋值范围,若超出则发出警告
Private $a;
Function __set($n,$v){
If($n==”a”&&$v<=3){
$this->$n=$v;
}else echo “超出赋值范围!”;
}}
$d=new A;
$d->a=10;    //此时将发出警告

 

5、  抽象

使用条件:类当中至少有一个抽象方法;

抽象方法后面不需要“{}”;

抽象类和抽象方法前面需加抽象关键字:abstract.

例如:

Abstract class A{
Public $n;
Function fun(){
Echo “end”;}
Abstract function ab();
Abstract function db();
}

抽象类不能实例化,只能被继承;

继承的派生类当中,要把所有的抽象方法重载。

例如:

Class B extend A{
Function ab(){…}
Function db(){…}
}
$b=new B;
$b->db();

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注