加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在子类中设置公共属性?

发布时间:2020-12-13 17:38:20 所属栏目:PHP教程 来源:网络整理
导读:我是OO编程的新手,我正在尝试理解如何以适当的方式从子类为公共属性赋值.我总是每次都以不同的方式做这件事,所以我觉得问你一般的做法是个好主意. 假设我有一个父类,Fruit和两个子类Apple和Banana. ???? abstract class Fruit { protected $color; //empty p
我是OO编程的新手,我正在尝试理解如何以适当的方式从子类为公共属性赋值.我总是每次都以不同的方式做这件事,所以我觉得问你一般的做法是个好主意.

假设我有一个父类,Fruit和两个子类Apple和Banana.

????

abstract class Fruit {

    protected $color; //empty property

    protected function getColor(){
        return $this->color;
    }
}

class Apple extends Fruit {
    protected $color = 'red';
}

class Banana extends Fruit {
    protected $color = 'yellow';
}

?>

每个子类必须具有属性颜色,例如,超类中的函数getColor将使用它.

但是我该如何处理该物业?

>我在父级中定义空变量$color.然后我在子类中设置变量$color,并通过parent :: __ construct将它们传递给父类,以将值赋给父类中的属性.
>我在父级中定义空变量$color.然后我只需在子类中使用$this-> color来设置值.
>我在每个子类中定义属性,并保持原样.继承的方法仍然可以使用它.

我想最好收集父类中的公共属性,但是编写那么多行来设置一些值感觉有点过分(如果我有很多属性,那么会有很多功能参数以及).第二和第三部分,但很难看出我实际上需要定义属性.

我该怎么想?哈哈,我对所有OO思维方式都很困惑,我几乎没有编写任何代码.

谢谢.

解决方法

没有“银弹”.通常,应该通过构造函数的参数设置预期在子类中不同的所有字段,以确保它们是显式设置的.可以通过为属性赋值来初始化其他字段.

例如,可以通过为属性赋值来设置水果的颜色(因为许多水果可以是红色),但名称应该由构造函数的参数设置(因为名称唯一标识水果).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读