Çocuğun Ebeveyn sınıf 'özelliğini Erişme

2 Cevap php

Aşağıdaki örneğe bakın (PHP)

class Parent
{ 
  protected $_property;
  protected $_anotherP;

  public function __construct($var)
  {
    $this->_property = $var;
    $this->someMethod();  #Sets $_anotherP
  }

  protected function someMethod()
  ...
}

class Child extends Parent
{
  protected $parent;

  public function __construct($parent)
  {
    $this->parent = $parent;
  }

  private function myMethod()
  {
    return $this->parent->_anotherP;  #Note this line
  }
}

Ben OOP için yeni ve biraz cahil değilim.

Ben yanlış görünüyor bu sınıfın bir örneğini kullanıyorum anne özelliğine ulaşmak için buraya: S (i çocuk olmak gerek yok o zaman). I çocuk özellikleri ile ebeveyn özellikleri senkronize edebilir ve doğrudan bu-> ebeveyn-> anotherP $ kullanmak zorunda kalmadan, $ this-> anotherP erişebilirsiniz böylece kolay bir yolu var mı?

2 Cevap

Lütfen Child sınıfı, Parent class, her özellikleri ve ya public veya protected {[(1 olan yöntemleri uzanan gibi ve civarı başka bir şekilde - onlar Child class tanımlandığı sanki)]} class Child sınıf tarafından görülecektir.

Child class extends Parent class, bu "olarak görülebilir zaman Child bir {[(2) 'dir "}] o bu başka bir şekilde yeniden tanımlar sürece Child, Parent özelliklerini sahip olduğu anlamına gelir.

(BTW, note that "parent "ayrılmış bir anahtar kelime PHP, - Eğer bu isimde bir sınıf adını anlamına gelir)


Here's a quick example of a "parent" class :

class MyParent {
    protected $data;
    public function __construct() {
        $this->someMethodInTheParentClass();
    }
    protected function someMethodInTheParentClass() {
        $this->data = 123456;
    }
}

Ve bu "çocuk" class bulunuyor:

class Child extends MyParent {
    public function __construct() {
        parent::__construct();
    }
    public function getData() {
        return $this->data; // will return the $data property 
                            // that's defined in the MyParent class
    }
}

İşte bu şekilde kullanılabilir:

$a = new Child();
var_dump($a->getData());

Ve çıkış olarak alırsınız:

int 123456

MyParent sınıfında tanımlanan ve aynı MyParent sınıfının bir yöntemi başlatıldı $data özelliği, demek ki, {[(3) ile erişilebilir kendi sanki]} sınıf.


To make things simple : as the Child "is a" MyParent, it doesn't need to keep a pointer to... itself ;-)

Bu çalışması gerekir ..

class Child extends Parent
{
  private function myMethod()
  {
    return $this->_anotherP;
  }
}

Çünkü _anotherP onun kadar her Türemiş sınıf başka bir nesne, onun aynı nesne onu acces, ama onun değil, korumalı.

Ancak ebeveyn onun akıllıca bir seçim olarak Alıcılar bir belirleyiciler olun.