php面向对象多态,php面向对象之继承、多态、封装简介

本文介绍了PHP中的接口、继承、抽象类和多态概念。接口用于定义类需要实现的方法集合,类通过实现接口来强制执行特定行为。继承允许子类从父类继承属性和方法,子类可以重写父类的字段和方法以扩展功能。抽象类不能实例化,用于定义抽象方法,子类必须实现所有抽象方法。多态则允许不同类的对象使用相同的接口,表现出不同的行为。通过理解这些概念,开发者能更好地利用PHP进行面向对象编程。
摘要由CSDN通过智能技术生成

1. 接口

在php编程语言中接口是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过实现接口的方式,从而来实现接口的方法(抽象方法)。

接口定义:interface InterAnimal{

public function speak();

public function name($name);

}//接口实现

class cat implements InterAnimal{

public function speak(){

echo "speak";

} public function name($name){

echo "My name is ".$name;

}

}特别注意:

* 类全部为抽象方法(不需要声明abstract)

* 接口抽象方法是public

* 成员(字段)必须是常量

2. 继承

继承自另一个类的类被称为该类的子类。这种关系通常用父类和孩子来比喻。子类将继

承父类的特性。这些特性由属性和方法组成。子类可以增加父类之外的新功能,因此子类也

被称为父类的“扩展”。

在PHP中,类继承通过extends关键字实现。继承自其他类的类成为子类或派生类,子

类所继承的类成为父类或基类。class Computer {

private $_name = '联想'; public function __get($_key) {

return $this->$_key;

} public function run() {

echo '父类run方法';

}

}class NoteBookComputer extends Computer {}$notebookcomputer = new NoteBookComputer ();$notebookcomputer->run (); //继承父类中的run()方法echo $notebookcomputer->_name; //通过魔法函数__get()获得私有字段特别注意:

有时候并不需要父类的字段和方法,那么可以通过子类的重写来修改父类的字段和方法。class Computer {

public $_name = '联想'; protected function run() {

echo '我是父类';

}

}//重写其字段、方法class NoteBookComputer extends Computer {

public $_name = 'IBM'; public function run() {

echo '我是子类';

}

}通过重写调用父类的方法

有的时候,我们需要通过重写的方法里能够调用父类的方法内容,这个时候就必须使用

语法:父类名::方法()、parent::方法()即可调用。

final关键字可以防止类被继承,有些时候只想做个独立的类,不想被其他类继承使用。

3. 抽象类和方法

抽象类特性:

* 抽象类不能产生实例对象,只能被继承;

* 抽象方法一定在抽象类中,抽象类中不一定有抽象方法;

* 继承一个抽象类时,子类必须重写父类中所有抽象方法;

* 被定义为抽象的方法只是声明其调用方式(参数),并不实现。abstract class Computer {

abstract function run();}final class NotebookComputer extends Computer {

public function run() {

echo '抽象类的实现';

}

}

3. 多态

多态是指OOP 能够根据使用类的上下文来重新定义或改变类的性质或行为,或者说接口的多种不同的实现方式即为多态。interface Computer {

public function version();

public function work();}class NotebookComputer implements Computer {

public function version() {

echo '联想
';

} public function work() {

echo '笔记本正在随时携带运行!';

}

}class desktopComputer implements Computer {

public function version() {

echo 'IBM';

} public function work() {

echo '台式电脑正在工作站运行!';

}

}class Person {

public function run($type) {

$type->version (); $type->work ();

}

}$person = new Person ();$desktopcomputer = new desktopComputer ();$notebookcomputer = new NoteBookComputer ();$person->run ( $notebookcomputer );

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值