面向对象——抽象方法和抽象类

php抽象类定义

抽象类和接口相似,都是比较特殊的类。抽象类也是特殊一种类,接口是一种特殊的抽象类。他们的作用在理解上会困难一点。想要理解抽象类先要理解抽象方法,在面向对象的编程语言中,一个类可以很多子类,而每一个类中至少有一个公共方法作为外部访问的它(父类)的接口,为了方便类之前继承就引入了抽象方法。

什么是php抽象方法?

抽象方法是没有方法体的方法,没有方法体是指方法声明时没有花括号以及其中的内容,而是声明方法时直接在方法名后加上分号结束,声明抽象方法要使用abstract关键字修饰。声明抽象方法格式:abstract function();

什么是php抽象类?

只要声明抽象方法的类就是抽象类,抽象类也要使用abstract关键字修饰,抽象类中可以有不是抽象方法的方法和成员属性,但访问权限不能是私有(private关键字修饰的)

要点:

* 只要声明抽象方法的类就是抽象类,抽象类也要使用abstract关键字修饰
* 出了在抽象类中可以有抽象方法外,和正常的类完全一样
* 抽象类中可以有不是抽象方法的方法和成员属性
* 抽象类不能实例化
* 子类必须重写父类的所有抽象方法,否则这个子类还是抽象类


index.php
<?php
/**
 * 只要声明抽象方法的类就是抽象类,抽象类也要使用abstract关键字修饰
 * 出了在抽象类中可以有抽象方法外,和正常的类完全一样
 * 抽象类中可以有不是抽象方法的方法和成员属性
 * 抽象类不能实例化
 * 子类必须重写父类的所有抽象方法,否则这个子类还是抽象类
 */
include 'car.php';

// 报错,抽象类不能实例化
// $car = new car();
// $car2 = new car2();
$bus = new bus();

$bus->my_car();
$bus->getName();

car.php

<?php

abstract class car
{
    public $name = '宝马';
    abstract function my_car();
    function getName()
    {
        echo $this->name;
    }

}

class bus extends car
{
    function my_car()
    {
        echo '使用了my_car抽象类<br />';
    }
}

// 一个没有抽象方法的抽象类
abstract class car2
{
    public $name = 1;
    function car2_fun()
    {
        echo '函数';
    }
}

猜你喜欢

转载自www.cnblogs.com/longqin/p/11708719.html