zoukankan      html  css  js  c++  java
  • 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方法

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

  • 相关阅读:
    Daily Scrum 10.31
    Daily Scrum 10.30
    Daily Scrum 10.29
    Daily Scrum 10.28
    扩展设置
    安装
    james+javamail入门
    解决ZF2_PATH environment
    Apache Httpd Server 2.2升级2.4
    缓存,spring
  • 原文地址:https://www.cnblogs.com/freeweb/p/4643055.html
Copyright © 2011-2022 走看看