php中的oop思想,php oop的特性是什么?php oop思想的三大特点介绍

php oop思想的三大特性分别为:封装,继承以及多态,在这里,我将具体的和大家说一下对php opp思想的理解,那么,接下来我们就来具体的看一看opp思想的三大特征及php opp思想。

封装性

封装性就是把对象的属性和行为结合成一个独立的单位。

封装一个类需要两步 第一步是私有化一个类 第二步是用set和get 做出读取赋值的操作

他的好处是:隐藏类的实现细节,可以方便加入逻辑控制性,限制对属性的不合理操作,便于修改增强代码的可维护性。

__get与__set

一般说把类私有话更符合现实的逻辑。

预定义两种函数来进行获取与敷值操作。

__get 获取值通常是域的值

__set 设置值通常是域的值

__call 调用一个对象中不存在的方法时,就会产生错误call()这个方法来处理这种情况。

静态属性和方法

static关键字 来声明静态方法

static静态变量 在类的内部生成一个静态变量 就是能够被所有类的实力化共想 也就是说静态成员则放到了“初始化静态段”,在类第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享

使用方法:self::$静态属性、self::静态方法static function p(){

echo self::$country;

echo self::PI;//访问常量

//echo $this->name;在静态方法中只能操作静态属性

//self::p();

}

外部调用:类::$静态属性、类::静态方法

const关键字:用来生成常量 常量是唯一的不能改变的 惯例常量为大写

const CONSTANT = 'constant value'; 生成一个常量

echo self::CONSTANT;//类内部访问

echo ClassName::CONSTANT;//类外部访问

继承性

B类的对象拥有A类的全部属性与行为,称作B对A类的继承。

假如一个类从多个类中继承了属性与服务,这称为多继承,通常我们成为继承类为子类被继承类为父类,在PHP中只有单继承,但一个父类可以被多个类继承,但是一个子类只能有一个父类,但是允许关联继承,通过继承可以减化类的定义。

extende声明继承关系

语法格式:class B extends A 此范例指明 B继承了A

类的外部访问对子类是有效的

子类与父类的属性与方法

子类继承父类的所有内容,但父类中的private部分不能直接访问

子类中新增加的属性和方法是对父类的扩展

子类中定义的与父类同名的属性是对父类属性的覆盖,同名的方法也是对父类方法的覆盖

重写的方法

在子类中,使用parent访问父类中的被覆盖的属性和方法

parent::__construce();

parent::$name;

parent::fun();

覆盖父类原有属性

clone克窿对象 语法格式$c=clone $p; $c克窿的对象$p 输出echo $c->name;

对象比较

===两个比较运算符。

==是比较两个对象的内容。

===是比较对象的句柄,即引用地址。

instanceof操作符用于检测对象实力是否属于某一个类的类型 属于返回true 不属于返回false

__clone()如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法function __clone(){

$this->name="我是一个克隆人";

}

final表示一个类是最终版本 也就是说它不能在被子类调用

多态性

多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。

就是说同一种方法在子类与父类中执行的结果不同。class A {

function info(){

echo “A INFO”;

}

}

class B extends A {

function info(){

echo “B INFO”;

}

}

class C extends A {

function info(){

echo “C INFO”;

}

}

function printinfo($obj){

function printinfo(A $obj){

if($obj instanceof A)

$obj->info();

$obj->info();

}

}

$a=new A(); $b=new B(); $c=new C();

printinfo($a); //输出A INFO

printinfo($b); //输出B INFO

printinfo($c); //输出C INFO

抽象方法和抽象类

抽象方法是作为子类摸版使用的。abstract class Person{

public $name;

abstract function getInfo();

}

抽象类不能被实力话,一个抽象类中,必须有一个抽象方法。但是抽象类中可以定义动态函数。

接口

当一个类继承了一个接口之后,它要覆盖接口的所有方法,接口只能声明常量,接口的方法必须定义为共有否则无法继承,接口可以与多个接口间继承

语法:interface PCI{

const TYPE="PCI";

//public $name; error

function start();

function stop();

}

接口中的方法可以声明为static

interface A{ function a();}

interface B{ function b();}

interface C extends A{ function c();}

class D implements B,C{

function a(){}

function b(){}

function c(){}

}

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值