interface 接口 和多态的含义

 1 <?php
 2 //interface关键字用于定义接口
 3 interface ICanEat{
 4     //接口里面的方法不需要方法的实现
 5     public function eat($food) ;
 6 }
 7 //implemaents关键字用于表示类实现某个接口
 8 class Human implements ICanEat{
 9     //实现了某个接口之后,必须提供接口中定义的方法的具体实现
10     public function eat($food) {
11         echo "Human eating ".$food."<br/>";
12     }
13 }
14 class animal implements ICanEat{
15     //实现了某个接口之后,必须提供接口中定义的方法的具体实现
16     public function eat($food) {
17         echo "Animal eating ".$food."<br/>";
18     }
19 }
20 $obj=new Human();
21 $obj->eat(‘Apple‘);
22
23 $monkey = new Animal();
24 $monkey->eat(‘Banana‘);
25
26 //不能实例化接口
27 //$eatObj = new ICanEat();
28
29 //可以使用instanceof关键字来判断某个对象是否实现了某个接口
30 var_dump($obj instanceof ICanEat);
31
32 function checkEat($obj) {
33     if($obj instanceof ICanEat) {
34         $obj->eat(‘food‘);
35     }else {
36         echo "The obj can‘t eat"."<br/>";
37     }
38 }
39
40  checkEat($obj)."<br/>";
41  checkEat($monkey);
42
43  //可以用extends让接口继承接口
44  interface ICanPee extends ICanEat{
45      public function pee();
46  }
47  //当类实现子接口时,父接口定义的方法也需要在这个类里面具体实现
48  class Human1 implements ICanPee{
49      public function pee() {}
50      public function eat($food){}
51  }

总结:

某个类实现(implements)了某个接口和继承(extends)了某个类的区别
  --实现接口和继承类很类似,但是接口不能直接创建自己的对象
     ··如果创建了“会吃东西这个对象”,那么具体怎么吃根本不知道
  --继承的父类必须有该方法的具体实现,子类可以重写父类的方法,也可以不重写
      接口里面的方法是不需要具体实现的,只要定义了方法的名称和参数就可以了,
  --具体的实现必须在实现类中定义
  --一句话概括:类的方法必须有实现,接口的方法必须为空

多态:

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

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

对于上面接口的例子中

1 //相同的一行代码,对于传入不同的接口的实现的对象的时候,表现是不同的,这就是多态
2  checkEat($obj);
3  checkEat($monkey);
时间: 2024-08-29 16:23:50

interface 接口 和多态的含义的相关文章

java学习之接口、多态和内部类

接口是一组行为的规范.定义.接口是面向对象编程体系中的思想精髓之一,使用接口可以让我们的程序更加利于变化. 接口的格式: interface 接口名称{ 全局变量: 抽象方法: } 接口中的成员修饰符是固定的,成员常量用public static  final修饰:成员函数用public  abstract修饰,接口的出现将“多继承”通过多实现来体现.接口的使用也有一定的规则:接口可以继承多个接口,一个类中可以实现接口和多接口,抽象类实现接口可以不实现方法:接口中的所有实现方法的访问权限都是pu

Java之路 - 抽象类、接口、多态、向上向下转型

1.抽象类 如果父类当中的方法不确定如何进行{}方法实现,那么这就是一个抽象方法 抽象方法所在的类必须是抽象类 使用方法: (1)不能直接创建new抽象类对象 (2)必须用一个子类来继承抽象父类 (3)子类必须覆盖重写抽象父类当中所有的抽象方法 覆盖重写(实现):去掉抽象方法的abstract关键字,然后补上方法体大括号: (4)创建子类对象进行使用 public abstract class animal { //抽象类 public abstract void eat(); //这是一个抽象

day03(接口,多态)

接口:            概念:是功能的集合,可以当做引用数据类型的一种.比抽象类更加抽象. 接口的成员:               成员变量:必须使用final修饰 默认被 public & static & final修饰 不允许修改 成员方法:必须是抽象方法 默认是抽象方法 创建方法时可以省略.(开发时建议写上,好辨识)              构造方法:没有 public interface Inter01 { public static final int NUM=10;

java基础2:抽象类、接口与多态

关于Java基础的文章,我觉得写得还可以,以前发在了我其它的博客了,肯定是原创,现在再分享给大家出来. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

【转 】C#中的接口实现多态

C#中的接口实现多态 我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态 1.首先我们先要来了解了解什么是接口,它存在的意识 01.接口就是为了约束方法的格式(参数和返回值类型)而存在的 02.接口可以实现多继承,弥补单继承的缺陷.  03.接口可以看成是一个特殊的抽象类,通过反编译看源码可知 04.接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体 05.如果一个类实现了某个接口,就得实现该接口中所有的方法 06.接口要谨慎使用,防止出现接口污染!

No2_1.接口继承多态_Java学习笔记_接口

接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象的依存关系: 4.接口:Java中类可以实现多个接口,被用来建立类与类之间的标准: ***接口***1.接口的目的:Java语言只支持单继承,即一个类只能有一个父类.实际应用中,经常需要多继承解决问题,为解决该问题,提供接口实现类的多重继承:2.接口定义:与类的定义类似,接口的声明和接口体:[修饰符

C#中的接口实现多态

我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态 1.首先我们先要来了解了解什么是接口,它存在的意识 01.接口就是为了约束方法的格式(参数和返回值类型)而存在的 02.接口可以实现多继承,弥补单继承的缺陷.  03.接口可以看成是一个特殊的抽象类,通过反编译看源码可知 04.接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体 05.如果一个类实现了某个接口,就得实现该接口中所有的方法 06.接口要谨慎使用,防止出现接口污染! 07.接口仅仅代表一种

面向对象,封装,构造方法,this关键字,main,继承,接口,多态阶段性小结

一.局部变量和成员变量 成员变量:  定义在类中变量 局部变量:  定义在方法中变量 1成员变量与局部变量的区别: 应用范围 成员变量在整个类内都有效 局部变量只在其声明的方法内有效 生命周期   成员变量: 它属于对象,它随着对象的创建而创建,随着对象的消失而消失 局部变量: 使用完马上释放空间. 存储位置  成员变量属于对象,它存储在堆内,堆内的实体,当没有引用指向其时,才垃圾回收清理 局部变量存在栈内存中,当不在使用时,马上就会被释放. 初始值 成员变量它存储在堆中,如果没有赋初值,它有默

C#之interface接口

C#中接口与抽象类很相似,他们都无法实例化自己的对象,但是他们也有很重要的区别.Interface与Abstract class中,类不能多重继承,但是接口可以多重继承. 这段代码表明,声明接口的方法和继承接口之后要实现里面的未定义的方法 另外,一个类还可以继承多个接口,那样就要把接口中的所有函数都重新实现一次. 接口也可以实现扩展,这样可以是之前定义的接口重新得到使用.如下: 这样就可以通过ISorableAdd而不用再用ISorable来在类中继承了. 接口的多态(Polymorphism