php面向对象第十四篇 接口 interface

举报
陈业贵 发表于 2021/12/16 22:53:05 2021/12/16
【摘要】 接口: 第一个问题? 什么是多重继承? 这的多重继承的意思是说: 一个子类继承多个父类,就是多重继承了。 那为什么一个子类不能继承多个父类呢? 多重继承缺点:我成为觉得(继承)它的核心是子类继承父类,子类...

接口:
第一个问题?
什么是多重继承?
这的多重继承的意思是说:
一个子类继承多个父类,就是多重继承了。
那为什么一个子类不能继承多个父类呢?
多重继承缺点:我成为觉得(继承)它的核心是子类继承父类,子类没有父类所具备的方法与属性的前提下。
多重继承子类继承多个父类是吧,如果两个父类都具备相同的方法,子类想要调用调用哪一个啊,兄弟。。
继承一个父类就不一样了呀。
接口的实现核心是什么?
因为接口是没有方法体的,所以实现了相当于想法变成了现实把。
记住,实现与覆盖虽然差不多,但是还是有一些不一样的,比如覆盖是覆盖具有方法体的,实现是覆盖没有方法体的啊(想法变成现实)。

<?php
class  grandfather
{
		function eat()
		{
			echo "爷爷在吃饭";
			echo "<br />";
		}
}
class father
{
		function eat()
		{
			echo "爸爸在吃饭";
			echo "<br />";
		}
}
class zi extends father,grandfather
{
	
}
$zi1=new zi();
$zi1->eat();
?>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在这里插入图片描述
php不支持多继承。
只支持单继承与实现。
实现:

<?php
interface father
{
	function eat();
}
class zi implements father
{
	function eat()
	{
		echo "我在吃饭";
		echo "<br />";
	}
}
$zi1=new zi();
$zi1->eat();
?>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

实现多个接口,!!!!像!!!!是多重继承吧。

<?php
interface grandfather
{
	function fun1();
}
interface father
{
	function fun2();
}
class zi implements father,grandfather
{
	function fun1()
	{
		echo "我是第一个接口";
		echo "<br />";
	}
	function fun2()
	{
		echo "我是第二个接口";
		echo "<br />";
	}
}
$zi1=new zi();
$zi1->fun1();
echo "=========================<br />";
$zi1->fun2();
?>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在这里插入图片描述

混杂了抽象类与接口的程序。

<?php
abstract  class  grandfather
{
	abstract function fun1();
}
interface father
{
	function fun2();
}
class zi extends grandfather implements father
{
	function fun1()
	{
		echo "我是第一个接口";
		echo "<br />";
	}
	function fun2()
	{
		echo "我是第二个接口";
		echo "<br />";
	}
}
$zi1=new zi();
$zi1->fun1();
echo "=========================<br />";
$zi1->fun2();
?>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

在这里插入图片描述

如果是抽象类实现了接口呢?然后是类继承类抽象类,怎么做?

<?php
interface father
{
	function fun2();
}
abstract  class  grandfather implements father
{
	abstract function fun1();
	function fun2()
	{
		echo "牛逼";
	}
}
class zi extends grandfather
{
	function fun1()
	{
		echo "我是第一个接口";
		echo "<br />";
	}
}
$zi1=new zi();
$zi1->fun1();
echo "=========================<br />";
$zi1->fun2();
?>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

在这里插入图片描述

//下面是概念!!!

/*接口与抽象类

  
 
  • 1

一个类可以继承多个接口。。。
一个类只能继承一个抽象类。。。

抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。
动物类要有呼吸方法。怎么呼吸就是子类的事了。*/
/** 接口

  • 1.使用关键字:interface
  • 2.类是对象的模板,接口是类的模板
  • 3.接口看作是一个特殊的类
  • 4.接口中的方法,只声明不实现,与抽象类一样
  • 5.接口中的方法必须是public,支持static
  • 6.接口中可以声明类常量const,但不允许被类或子接口覆盖
  • 7.用类实现一个接口使用implements 关键字
  • 8.一个类可以实现多个接口,多个接口之间用逗号分开
  • 9.接口之间也可以使用关键字extends继承
  • 10.一个类实多个接口时,方法不可以重名
    */
    //接口核心:是一类物体的规则吧。
    //比如充电头是按照插座的规则去设计的哈
    /*PHP 与大多数面向对象编程语言一样,不支持多重继承。也就是
    说每个类只能继承一个父类。为了解决这个问题,PHP 引入了接口,
    接口的思想是指定了一个实现了该接口的类必须实现的一系列方法。
    接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是
    一种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象
    类里面的所有的方法都是抽象方法,那么我们就换一种声明方法使用
    “接口”;也就是说接口里面所有的方法必须都是声明为抽象方法,
    另外接口里面不能声明变量(但可声明常量 constant),而且接口里面
    所有的成员都是 public 权限的。所以子类在实现的时候也一定要使用
    public 权限实现
    */

/*因为接口里面所有的方法都是抽象方法,所以
在声明抽象方法的时候就不用像抽象类那样使用“abstract”这个关
键字了,默认的已经加上这个关键字,另外在接口里边的”public”
这个访问权限也可以去掉,因为默认就是 public 的,因为接口里所有
成员都要是公有的,对于接口里面的成员我们就不能使用“private”
的和“protected”的权限了,都要用 public 或是默认的
*/
/因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,
所以接口也不能产生实例对象; 它也做为一种规范,所有抽象方法需
要子类去实现
/
/而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字
是“implements”,而不是我们前面所说的“extends”
/
/接口不能被实例,必须被继承,接口也是一样的/

/我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想
实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才
行;
在前面我们说过,PHP 是单继承的,一个类只能有一父类,但是一个
类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不
仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;
/
/我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想
实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才
行;
在前面我们说过,PHP 是单继承的,一个类只能有一父类,但是一个
类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不
仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;
/

文章来源: blog.csdn.net,作者:贵哥的编程之路(陈业贵),版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_37805832/article/details/106691714

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。