【九月打卡】第21天--PHP面向对象编程第四章节面向对象的高级实践

2022/9/29 4:16:19

本文主要是介绍【九月打卡】第21天--PHP面向对象编程第四章节面向对象的高级实践,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称:PHP面向对象编程

课程章节:
4-6 对象接口-php面向对象编程
4-7 多态-php面向对象编程
课程链接

主讲老师:Peter

课程内容

学习到了PHP中的接口类,定义与实现的方式,是为了解决PHP类单继承的特性。接口的实现是多种多样的,这种特性我们称之为多态。

课程收获

一、对象接口

定义

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

特点

接口通过“interface” 关键词来定义
接口可以通过“extends”关键词继承
接口不能实例化
接口所有方法都是“public”权限
接口可以定义常量成员,但不能定义变量成员
类通过“implements”关键词来实现接口,类必须完全实现接口定义的所有功能
类的方法必须有实现,接口的方法必须为空
一个类可以同时“implements”(实现)一个到多个接口

为什么需要接口

PHP 类是单继承,也就是不支持多继承,当一个类需要多个类的功能时,继承就无能为力了,为此 PHP 引入了类的接口技术

代码实现

interface ICanEat 
{
    public function eat($food);
}

interface ICanPee extends ICanEat
{
    public function pee();
}


class Human implements ICanEat
{
    public function eat($food)
    {
        echo "Human eating ".$food."\n";
    }
}

class Animal implements ICanEat
{
    public function eat($food)
    {
        echo "Animal eating ".$food."\n";
    }
}

class Human1 implements ICanPee
{
    public function eat($food)
    {
        
    }
    public function pee()
    {
        
    }
}



$obj = new Human();
$obj->eat('Apple');
$obj = new Animal();
$obj->eat('Banana');

// 不能 实例化接口
// $eatObj = new ICanEat();

// 可以用instanceof关键字来判断某个对象是否实现了某个接口
var_dump($obj instanceof ICanEat);

二、多态

因为接口的方法实现可以有很多,所以对于接口里面定义的方法的具体实现是多种多样的,这种特性我们称之为多态

—比如接口A有两个实现B和C,B和C对A里面定义的方法的实现可以是不同的,这种现象就是多态

课程截图

图片描述

图片描述



这篇关于【九月打卡】第21天--PHP面向对象编程第四章节面向对象的高级实践的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程