<?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