接口: 第一个问题? 什么是多重继承? 这的多重继承的意思是说: 一个子类继承多个父类,就是多重继承了。 那为什么一个子类不能继承多个父类呢? 多重继承缺点:我成为觉得(继承)它的核心是子类继承父类,子类没有父类所具备的方法与属性的前提下。 多重继承子类继承多个父类是吧,如果两个父类都具备相同的方法,子类想要调用调用哪一个啊,兄弟。。 继承一个父类就不一样了呀。 接口的实现核心是什么? 因为接口是没有方法体的,所以实现了相当于想法变成了现实把。 记住,实现与覆盖虽然差不多,但是还是有一些不一样的,比如覆盖是覆盖具有方法体的,实现是覆盖没有方法体的啊(想法变成现实)。
<?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();
?>
php不支持多继承。 只支持单继承与实现。 实现:
<?php
interface father
{
function eat();
}
class zi implements father
{
function eat()
{
echo "我在吃饭";
echo "<br />";
}
}
$zi1=new zi();
$zi1->eat();
?>
实现多个接口,!!!!像!!!!是多重继承吧。
<?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();
?>
混杂了抽象类与接口的程序。
<?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();
?>
如果是抽象类实现了接口呢?然后是类继承类抽象类,怎么做?
<?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();
?>
//下面是概念!!!
/*接口与抽象类
一个类可以继承多个接口。。。 一个类只能继承一个抽象类。。。
抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。*/ /** 接口
/*因为接口里面所有的方法都是抽象方法,所以 在声明抽象方法的时候就不用像抽象类那样使用“abstract”这个关 键字了,默认的已经加上这个关键字,另外在接口里边的”public” 这个访问权限也可以去掉,因为默认就是 public 的,因为接口里所有 成员都要是公有的,对于接口里面的成员我们就不能使用“private” 的和“protected”的权限了,都要用 public 或是默认的 */ /因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法, 所以接口也不能产生实例对象; 它也做为一种规范,所有抽象方法需 要子类去实现/ /而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字 是“implements”,而不是我们前面所说的“extends”/ /接口不能被实例,必须被继承,接口也是一样的/
/我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想 实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才 行; 在前面我们说过,PHP 是单继承的,一个类只能有一父类,但是一个 类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不 仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;/ /我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想 实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才 行; 在前面我们说过,PHP 是单继承的,一个类只能有一父类,但是一个 类可以实现多个接口,就相当于一个类要遵守多个规范,就像我们不 仅要遵守国家的法律,如果是在学校的话,还要遵守学校的校规一样;/