抽象类(abstract class)的使用

<?php

/**
 * 抽象类Animal
 */
abstract class Animal
{
    abstract public function eat($food);

    abstract public function sleep();
}

/**
 * 兔子类
 */
class Rabbit extends Animal
{
    public function eat($food)
    {
        echo "兔子吃{$food}" . PHP_EOL;
    }

    public function sleep()
    {
        echo '兔子睡觉' . PHP_EOL;
    }
}

/**
 * 猴子类
 */
class Monkey extends Animal
{
    public function eat($food = '香蕉')
    {
        echo "猴子吃{$food}" . PHP_EOL;
    }

    public function sleep()
    {
        echo '猴子睡觉' . PHP_EOL;
    }
}

$rabbit = new Rabbit();
$rabbit->eat('胡萝卜'); // 兔子吃胡萝卜
$rabbit->sleep(); // 兔子睡觉

$monkey = new Monkey();
$monkey->eat(); // 猴子吃香蕉
$monkey->sleep(); // 猴子睡觉

//========== 总结 ==========//
// 1、抽象类只能被继承,不能使用new关键字直接实例化抽象类。
// 2、继承抽象类时必须把抽象方法全部实现。
// 3、类中只要有一个方法声明为抽象方法,那么该类就必须声明为抽象类。
// 4、抽象类中可以定义非抽象方法,且非抽象方法必须写方法体,哪怕是{}空方法体。
// 5、抽象方法必须声明为protected或public,不能声明为private。
// 6、实现抽象方法时,形参的数量、顺序要一一对应,但可以设置缺省值。

Copyright © 2024 码农人生. All Rights Reserved