码迷,mamicode.com
首页 > 其他好文 > 详细

抽象类

时间:2016-05-13 03:22:56      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

      抽象类是一种不能被实例化的类,只能作为其他类的父类来使用。抽象类使用abstract关键字来声明。
格式为:
abstract class AbstractName{
    ...
}

      抽象类和普通类相似,都包含成员变量和成员方法。两者的区别在于:抽象类至少要包含一个抽象方法。抽象方法没有方法体,其功能的实现只能在子类中完成。抽象方法也是使用abstract关键字来修饰的,格式为:
abstract function abstractName();
注意:在抽象方法后面要有分号。

      抽象类和抽象方法主要应用于复杂的层次关系中,这种层次关系要求每一个子类都包含并重写某些特定的方法。
例如:中国美食是多种多样的,有粤菜、鲁菜、川菜、湘菜等菜系。每种菜系使用的都是煎、炒、烹、炸等手法,只是在具体步骤上各有不同。如果把中国美食当做一个大类cate,下面的各大菜系就是Cate的子类,而煎炒烹炸则是每个类中都有的方法。每个方法在子类中的实现都是不同的,在父类中无法规定。为了统一规范,不同子类的方法要有一个相同的方法名:decoct(煎)、stir_fry(炒)、cook(烹)、fry(炸)

      例如:实现一个商品的抽象类MyObject,该抽象类包含一个抽象方法service()。为抽象类生成两个子类MyBook和MyComputer,分别在两个子类中实现抽象方法。最后实例化两个对象,调用实现后的抽象方法,输出结果。

<?php

/*抽象类MyObject*/
abstract class MyObject
{
    /*抽象方法service*/
    abstract function service($getName,$price,$num);
}

/*声明抽象类的子类*/
class MyBook extends MyObject{
    /*实现抽象方法*/
    function service($getName, $price, $num)
    {
        // TODO: Implement service() method.
        echo "您购买的商品是".$getName.",该商品的价格是: ".$price." 元。";
        echo "您购买的数量:".$num." 本。";
        echo "如发现缺页、损坏请及时更换";
    }
}

class MyComputer extends MyObject
{
    function service($getName, $price, $num)
    {
        // TODO: Implement service() method.
        echo "您购买的商品是".$getName.",该商品的价格是: ".$price." 元。";
        echo "您购买的数量:".$num." 台。";
        echo "如发质量问题请在三个月内及时更换";
    }
}

$book = new MyBook();
$computer = new MyComputer();
$book -> service("<PHP从入门到精通>",85,3);
echo "<br>";
$computer -> service("联想笔记本",5000,1);

运行结果为:
您购买的商品是,该商品的价格是: 85 元。您购买的数量:3 本。如发现缺页、损坏请及时更换
您购买的商品是联想笔记本,该商品的价格是: 5000 元。您购买的数量:1 台。如发质量问题请在三个月内及时更换

抽象类

标签:

原文地址:http://blog.csdn.net/qq_28602957/article/details/51337176

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!