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方法

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

  • 相关阅读:
    SQL Server中的syscomments表 解析
    char(0)引起的sql2000与sql2005结果不一致
    [转]Winform精耕细作DefWndProc/WndProc/IMessageFilter的区别
    C# 操作并口类,并口通信
    [转]计算机存储单位Byte、KB、MB、GB、TB、PB、EB、ZB、YB、DB、NB
    .net 深入系统编程(三)
    网站随记
    集训final D STL中string的应用
    icpc回顾·暑假
    ie中按钮onclick等事件失效。提示提示对象不支持此操作。在谷歌浏览器中又能使用解决办法
  • 原文地址:https://www.cnblogs.com/freeweb/p/4643055.html
Copyright © 2011-2022 走看看