php class uzanır - aynı isimde özellikleri / yöntemleri tamam mı?

3 Cevap php

"Kullanıcı" ve "Kullanıcı" genişletir "Yönetici" adlı başka bir sınıf adında bir sınıf var ve Yönetici tüm özelliklerini miras istiyorsanız, örneğin __ construct yöntemi, dışında Kullanıcıdaki yöntemleri.

class User {
private $name;

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

ve

class Admin extends User {
private $authorization;

function __construct($name,$authorization) {
$this->name = $name;
$this->authorization = $authorization;
}
}

Is this correct? Does Admin override User's construct method? If the extending class has the same method name I suppose it's invalid. Am I totally missing the point of class extension?

3 Cevap

Bu geçersiz değildir. Sınıf kalıtım bir yönü yöntemleri geçersiz kılmak ve başka bir uygulama sağlayabilir olmasıdır.

Ama senin durumunda, ben yapardım

class Admin extends User {
    private $authorization;

    function __construct($name,$authorization) {
        parent::__construct($name);
        $this->authorization = $authorization;
    }
}

Zaten üst sınıfında "ismi atama" uygulamak. Bu temiz bir yaklaşımdır.

Hayır, bu Kullanıcı kurucu geçersiz olarak tamamen yasaldır. Kendi üst sınıf "kılma" uzanan benzer adlarla Genellikle konuşulan, yöntemleri.

Bu modifiye burada bir rol oynarlar ama unutmayın: "Özel" Onlar uzanan sınıflar tarafından miras alınmaz gibi bir üst yöntemleri geçersiz almazsınız açıkladı. Hiçbir koşulda - "nihai" ilan yöntemler sınıfları genişleten ile değiştirileceğini edilemez.

Yes it's what extends is for. You can override all methods.

Hatta çocuk sınıfta yöntem içinde aynı adlı ana sınıfı kullanabilirsiniz.

Bkz: parent anahtar kelime