PHP面向对象(六)-抽象类

抽象类和接口都是特殊的类,因为它们都不能被实例化。抽象类只能作为父类使用,因为抽象类不能被实例化。

抽象类使用关键字abstract声明。语法格式如下:

abstract class 抽象类名称 {
	//抽象类的成员变量列表
	abstract function 成员方法1(参数);      //抽象类的成员方法
	abstract function 成员方法2(参数);      //抽象方法必须使用关键字abstract来修饰,抽象方法后必须有分号。
}

抽象类和普通类的主要区别:

  • 抽象类的方法没有方法内容

  • 至少包含一个抽象方法

有抽象方法的一定是抽象类;抽象类可以不包含抽象方法。

例1:

abstract class MyObject{
    abstract function service($getName,$price,$num);    //抽象类的成员方法
}
class MyBook extends MyObject{
    function service($getName,$price,$num){
        echo '购买的商品是'.$getName.',商品的价格是:'.$price.' 元。';
        echo '您购买的数量为:'.$num.' 本。';
    }
}
class MyComputer extends MyObject{     //继承抽象类
    function service($getName,$price,$num){
        echo '您购买的商品是'.$getName.',该商品的价格是:'.$price.' 元。';
        echo '您购买的数量为:'.$num.' 本。';
    }
}
$book = new MyBook();
$computer = new MyComputer();
$book -> service('book1',59,15);
echo '<p>';
$computer -> service('book2',65,10);

例2:

//子类必须实现抽象类的所有方法吗? 答:是的,否则会报错
abstract class MyObject1{
    abstract function service1($getName,$price,$num);    //抽象类的成员方法
	abstract function service2($getName,$price,$num);
}
class MyBook1 extends MyObject1{
    function service1($getName,$price,$num){
        echo '购买的商品是'.$getName.',商品的价格是:'.$price.' 元。'.'<br>';
        echo '您购买的数量为:'.$num.' 本。'.'<br>';
    }
	function service2($getName,$price,$num){
	    echo '购买的商品是'.$getName.',商品的价格是:'.$price.' 元。'.'<br>';
	    echo '您购买的数量为:'.$num.' 本。'.'<br>';
	}
}
$book1 = new MyBook1();
$book1 -> service1('book1',59,15);
$book1 -> service2('book2',59,15);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值