继承和OOP php中的一些属性除外?

kn3*_*n3l 1 php oop

继承和OOP php中的一些属性除外?

我有一个A类

class A{
    var a;
    var b;
    var c;
    var d;

    function todo1()
      {
            //more code here 
      }
     function todo2()
      {
             //more code here 
      }
     function todo_with_var_c()
      {
             //more code here 
      }

    }
Run Code Online (Sandbox Code Playgroud)

$A_ = new A;

我希望得到一个新对象$B,A除了相同的对象var c todo_with_var_c

所以我尝试了继承 php

class B extends A{

     //TODO
}

$B_ = new $B;//$B_ will the same object  $A_ but except `var c`
and and `todo_with_var_c`
Run Code Online (Sandbox Code Playgroud)

我该怎么做?谢谢!

Gor*_*don 7

想想这个词extends一秒钟.它暗示子类是父类的扩展.想一想:超过特殊情况或"B是一个带有额外责任的A".这意味着,您可以添加内容,但不应删除任何内容.如果B应该具有较少的属性,则B应该是父级而A应该是扩展名,例如反之亦然.

如果要隐藏子类中的属性和/或方法,请使用可见性.

class A
{
    protected $a;
    protected $b;
    private $c;
    protected $d;

    public function todo1() { … }
    public function todo2() { … }
    private function todo_with_var_c() { … }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我创建了属性protected,而在代码中它们是public因为var当没有可见性时,旧的PHP4语法(您不应再使用它).属性不应该是公共的,而是通过访问器方法访问(尽管对此的意见各不相同).

进一步学习资源:

  • 实际上这比未设置的方法更好. (2认同)