gpt4 book ai didi

php - 如何在子类中设置公共(public)属性?

转载 作者:可可西里 更新时间:2023-10-31 22:15:26 25 4
gpt4 key购买 nike

我是 OO 编程的新手,我正在尝试了解如何以正确的方式为子类的公共(public)属性赋值。每次我总是以不同的方式结束,所以我想问问你平时是怎么做的是个好主意。

假设我有一个父类 Fruit 和两个子类 AppleBanana

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';
}

?>

每个子类都必须有属性 color,比方说,父类(super class)中的函数 getColor 将使用它。

但是我该如何处理属性(property)呢?

  1. 我在父级中定义了空变量 $color。然后在子类中设置变量$color,通过parent::__construct传递给父类,给父类中的属性赋值。

  2. 我在父级中定义了空变量 $color。然后我简单地在子类中使用 $this->color 来设置值。

  3. 我在每个子类中定义属性,然后就这样保留它。继承的方法仍然可以使用它。

我想最好把公共(public)属性收集在父类中,但是写那么多行来设置几个值感觉有点过分了(如果我有很多属性,就会有还有很多函数参数)。第二和第三项有效,但很难看出我实际上根本不需要定义该属性。

这里应该怎么想?我对所有面向对象的思维方式感到困惑,以至于我几乎没有写任何代码,哈哈。

谢谢。

最佳答案

您的所有子类都将继承颜色属性。 protected 关键字将确保它被继承给 child ,但对外界不可用。您不需要在您的 child 中声明 $this->color 因为它已经存在,在您拥有的子类中的方法中为 $this->color 分配一个值那里。

关于php - 如何在子类中设置公共(public)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6258127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com