• OOP面向对象学习笔记(3)---接口与抽象类


    一:接口

    1:问题:人会吃饭,动物也会吃饭,有些植物也可以吃饭(比如猪笼草),但是吃这个方法对于不同的生命是不同的。

            动物张嘴咀嚼,植物直接包裹融化等等。吃这个方法不能作为父类中的方法被统一继承,因为不同的生命,吃的方法不一样。

    2:接口的定义:把不同类的共同行为进行定义,然后在不同的类里面实现不同的功能。

    3:特性:一旦类实现了某个接口,就必须实现接口定义的方法(同时也说明了接口中的方法只需要定义,不需要实现。)

                一个接口可以继承另一个接口,用extends。

    4:总之,接口就是为不同的类定义的规范。

     1 <?php
     2 //定义接口Eat
     3 interface Eat {
     4     public function eat($food);
     5 }
     6 //人类实现这个接口
     7 class Human implements Eat {
     8     public function eat($food) {
     9         echo "human is eating " . $food . "<br>";
    10     }
    11 }
    12 //植物实现这个接口
    13 class Plant implements Eat {
    14     public function eat($food) {
    15         echo "plant is eating " . $food . "<br>";
    16     }
    17 }
    18 $human = new Human ();
    19 $plant = new Plant ();
    20 $human->eat ( "banana" ); //human is eating banana
    21 $plant->eat ( "apple" );  //plant is eating banana

    二:抽象类

    1:问题:接口中的方法全部不实现,类中的方法一般全部实现。

                 有没有一种形态是介于接口和类之间的呢?

    2:回答:有这样一种形态-抽象类。抽象类中的方法有的实现,有的不实现,等待子类去实现。

    3:实例:人与植物吃东西的方法不同,但是呼吸时相同的,所以可以定义一个抽象类。实现呼吸方法,吃东西方法不实现。

     1 <?php
     2 //抽象类和抽象方法都用abstract修饰
     3 abstract class Common {
     4     public abstract function eat();
     5     public function breathe() {
     6         echo "we are breathing...<br>";
     7     }
     8 }
     9 
    10 class Human extends Common{
    11     public function eat(){
    12         echo "human is eating...<br>";
    13     }
    14 }
    15 class Plant extends Common{
    16     public function eat(){
    17         echo "plant is eating...<br>";
    18     }
    19 }
    20 $human=new Human();
    21 $plant=new Plant();
    22 $human->eat();      //human is eating...
    23 $human->breathe();  //we are breathing...
    24 $plant->eat();      //plant is eating...
    25 $plant->breathe();  //we are breathing...

    三:面向对象的三大特性

    面向对象的三大特性:继承、封装、多态。

    继承:比如子类继承父类,子接口继承父接口等。可以提高代码的复用性,简洁代码,提高效率。

    封装:private、protected等修饰的属性和方法。可以很好地隐藏不该让外部看到的关键数据。

    多态:上面植物、人类对eat()的方法实现多种多样,这本身就是一种多态。

  • 相关阅读:
    js json与字符串相互转换
    Web 加入favicon
    JS 深拷贝
    C# 读取配置文件
    设计模式之抽象工厂模式
    设计模式之工厂方法的隐藏
    设计模式之工厂方法的重载
    设计模式之工厂方法配置文件与反射
    C#设计模式之工厂方法模式
    jq解析json文件
  • 原文地址:https://www.cnblogs.com/bwcx/p/oop3.html
Copyright © 2020-2023  润新知