• php抽象类的简单应用


      抽象类也是面向对象中的重要概念,和接口、继承的概念重要性相当,在面向对象的开发中,所有的对象都是通过类来描述的,但是反过来,并不是所有类都是用来描绘对象的,广义上讲如果一个类中没有足够信息来描述一个具体的对象,这样的类就是抽象类。具体用简单的代码来实现:

     1 abstract class ACanEat {
     2    // 抽象方法需要在子类中实现 
     3    abstract public function eat($food);
     4 
     5    public function breath(){
     6       echo "Breath use the air.<br />";
     7    }
     8 }
     9 
    10 // Human类继承了ACanEat抽象类
    11 class Human extends ACanEat { 
    12   // 跟Animal类的实现是不同的
    13   public function eat($food){
    14     echo "Human eating " . $food . "
    ";
    15   }
    16 }
    17 
    18 // Animal类继承了ACanEat抽象类
    19 class Animal extends ACanEat {
    20   public function eat($food){
    21     echo "Animal eating " . $food . "
    ";
    22   }
    23 }
    24 
    25 $man = new Human();
    26 $man->eat("Apple");
    27 $man->breath(); // 和Animal共用了抽象类ACanEat的breath方法
    28 $monkey = new Animal();
    29 $monkey->eat("Banana");
    30 $monkey->breath();

    从代码可以简单的看出,抽象类定义前面以abstract关键字开始,里面可以定义多个方法,可以具体实现,也可以定义为抽象方法,没有实现的方法需要设定为抽象方法,需要在最前面加abstract关键字,抽象方法需要在子类中实现,而普通方法子类可以不用重写,对象可以直接使用。

      上面代码中,Human类和Animal类都继承了ACanEat抽象类,通过各自不同的方法实现了eat,但是两个类继承了相同的方法breath,这个属性可以认为是相同的,无论实例化哪个对象都可以使用相同的breath方法

      所以,抽象类其实就是介于普通类和接口之间的一个类,普通类需要实现所有方法,接口所有方法都不需要实现,而抽象类可以根据自己的需要去选择实现部分方法;但是一旦类里面有抽象方法,这个类就必须是抽象类,另外注意,抽象类跟接口一样,不能直接实例化为对象,只能被普通类继承,,其实抽象类同样体现了面向对象的多态现象

  • 相关阅读:
    Linux下解析域名命令-dig 命令使用详解
    重写、覆盖、重载、多态几个概念的区别分析
    介绍python中运算符优先级
    介绍Python中6个序列的内置类型
    Mysql(Mariadb)数据库主从复制
    winscp中使用sudo的方法
    git push跳过用户名和密码认证配置教程
    案例:通过shell脚本实现mysql数据备份与清理
    毕业季,我的Linux求职之路
    PHP和ajax详解
  • 原文地址:https://www.cnblogs.com/freeweb/p/4643055.html
Copyright © 2020-2023  润新知