加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP面向对象开发之类的多态解说

发布时间:2023-05-17 13:20:19 所属栏目:PHP教程 来源:
导读:类的多态:1.多态的介绍和优势。2.运算符:instanceof。3.多态的简单应用。1.多态的介绍和优势介绍:多态性是继承抽象和继承后,面向对象语言的第三特征。例子:USB接口,插上不同的东西会使用不同的功能。优势:OOP

类的多态:

1.多态的介绍和优势。

2.运算符:instanceof。

3.多态的简单应用。

1.多态的介绍和优势

介绍:多态性是继承抽象和继承后,面向对象语言的第三特征。

例子:USB接口,插上不同的东西会使用不同的功能。

优势:OOP并不仅仅是把很多函数和功能集合起来,目的而是使用类,继承,多态的方式描述我们生活中的一种情况。

2.运算符:instanceof

PHP一个类型运算符,用来测定一个给定的对象是否来自指定的对象

格式代码如下:

class A {} 

class B {} 

$thing = new A; 

if ($thing instanceof A) { 

echo "A"; 

if ($thing instanceof B) { 

echo "B"; 

3.多态的简单应用

实例1代码如下:

<?php 

class A { 

class B { 

$new = new A; 

if ($new instanceof A) { 

echo "A"; 

if ($new instanceof B) { 

echo "B"; 

?> 

实例2代码如下:

<?php 

interface MyUsb { 

 function type(); 

 function alert(); 

class Zip implements MyUsb { 

 function type() { 

  echo "2.0"; 

 } 

 function alert() { 

  echo "U盘驱动正在检测……<br />"; 

 } 

class Mp3 implements MyUsb { 

 function type() { 

  echo "1.0"; 

 } 

 function alert() { 

  echo "MP3驱动正在检测……"; 

 } 

class MyPc { 

 function Add_Usb($what) { 

  $what->type(); 

  $what->alert(); 

 } 

$p = new MyPc(); 

$zip = new Zip(); 

$mp3 = new Mp3(); 

$p->Add_Usb($zip); 

$p->Add_Usb($mp3); 

?> 

补充一个实例代码:

<html> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 

<title>继承和多态</title> 

</head> 

<body> 

<?php 

/*  父类  */ 

class MyObject{ 

 public $object_name;         //图书名称 

 public $object_price;          //图书价格 

 public $object_num;          //图书数量 

 public $object_agio;          //图书折扣 

 function __construct($name,$price,$num,$agio){    //构造函数 

  $this -> object_name = $name; 

  $this -> object_price = $price; 

  $this -> object_num = $num; 

  $this -> object_agio = $agio; 

 } 

 function showMe(){          //输出函数 

  echo '这句话不会显示。'; 

 } 

/*  子类Book  */ 

class Book extends MyObject{         //MyObject的子类。 

 public $book_type;          //类别 

 function __construct($type,$num){       //声明构造方法 

  $this -> book_type = $type; 

  $this -> object_num = $num; 

 } 

 function showMe(){          //重写父类中的showMe方法  

  return '本次新进'.$this -> book_type.'图书'.$this->object_num.'本<br>'; 

 } 

/*  子类Elec  */ 

class Elec extends MyObject{         //MyObject的另一个子类 

 function showMe(){          //重写父类中的showMe方法 

  return '热卖图书:'.$this -> object_name.'<br>原价:'.$this -> object_price.'<br>特价:'.$this -> object_price * $this -> object_agio; 

 } 

/*  实例化对象  */ 

$c_book = new Book('计算机类',1000);       //声明一个Book子类对象 

$h_elec = new Elec('PHP函数参考大全',98,3,0.8);     //声明一个Elec子类对象 

echo $c_book->showMe()."<br>";        //输出Book子类的showMe()方法 

echo $h_elec->showMe();         //输出Elec子类的是showMe()方法 

?> 

</body> 

</html> 

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!