为了账号安全,请及时绑定邮箱和手机立即绑定

父类中不写这个方法可以吗?

父类中不写这个方法可以吗?

PHP
SMILET 2019-03-07 17:16:25
反正子类中也是要重写的 为什么父类中还要定义这个方法?不写也是可以的吧? abstract class ACanEat { // 抽象方法需要在子类中实现 abstract public function eat($food); public function breath(){ echo "Breath use the air.<br />"; }} // Human类继承了ACanEat抽象类class Human extends ACanEat { // 跟Animal类的实现是不同的 public function eat($food){ echo "Human eating " . $food . "\n"; }} // Animal类继承了ACanEat抽象类class Animal extends ACanEat { public function eat($food){ echo "Animal eating " . $food . "\n"; }} $man = new Human();$man->eat("Apple");$man->breath(); // 和Animal共用了抽象类ACanEat的breath方法$monkey = new Animal();$monkey->eat("Banana");$monkey->breath();
查看完整描述

5 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

抽象类相当于模板的作用,其中定义的抽象方法用来强制子类实现。

eg.一个数据库连接的基类,必定需要声明一个abstract function connect(), 它的子类 例如 mysql,sql server 继承父类并分别实现各自连接的方法。

查看完整回答
反对 回复 2019-03-18
?
12345678_0001

TA贡献1802条经验 获得超5个赞

父类中的抽象方法是共有的属性,每个animal都具有eat方法,当父类定义了之后,子类必须去实现。如果你觉得这个eat不是那么共有,也不可以不写,这样子可能有些子类就不具备eat这个功能。
在父类中定义了抽象方法后,还有一个好处是你可以在父类中调用这个方法,在子类具体实现,这样不必要每次都在子类中去调用这个方法了。
感觉好的话点赞哦~

查看完整回答
反对 回复 2019-03-18
?
喵喔喔

TA贡献1735条经验 获得超5个赞

abstract类和interface类一般用过父类,用来约束子类,按照某种规范。

查看完整回答
反对 回复 2019-03-18
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。

代码示例:

<?php 

/**
* Abstract Class for Animal
*/
abstract class AnimalAbstract{

    abstract public function eat($food);

    public function run(){
        echo "It's running...";
    }
}

/**
* Class for Dog
*/
class Dog extends AnimalAbstract{

    public function eat($food){
        echo "It's eating bones";
    }

}

/**
* Class for Cat
*/
class Cat extends AnimalAbstract
{
    public function eat($food){
        echo "It's eating fish";
    }    
}

如子类不实现父类方法,则会报错。
代码示例:

class Dog extends AnimalAbstract{

    // public function eat($food){
    //     echo "It's eating bones";
    // }

}

错误信息:

Fatal error: Class Dog contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (AnimalAbstract::eat) 

官方原文:
PHP抽象类

查看完整回答
反对 回复 2019-03-18
?
千巷猫影

TA贡献1829条经验 获得超7个赞

抽象方法和接口方法主要作用是用于约束子类按照特定的软件结构实现,是软件架构强制实现的媒介,在多人的团队协作开发中起尤为重要,保证软件结构。

查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 718 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信