PHP OO ve sınıfları hakkında soru çift

3 Cevap php

Ben OO ve sınıfları hakkında öğrenme yaşıyorum, ben PHP OO ve sınıfları hakkında bir kaç soru var

  1. Anladığım kadarıyla, başka bir sınıfını genişleten bir sınıf sadece diğer sınıfını genişleten sınıf değişkenleri / özelliklerine ve bunun uzanan bir sınıfın fonksiyonları / yöntemlerine erişim anlamına gelir. Bu doğru mudur?

  2. Ben statik bir yöntem veya özellik temelde bir sınıf dışında bir usul işlev veya değişken olarak aynıdır ve hemen hemen her yerde kullanılabilir olduğunu biliyoruz. Bu doğru mudur?

  3. Kamu herhangi bir sınıf, sadece kapsüllü edilir sınıf veya sahibinden genişletilmiş bir sınıf olarak ve özel araçlara erişebilirsiniz demektir erişebilir ve kullanabilirsiniz. Bu doğru mudur?

3 Cevap

1) Evet, bu doğru. Bir çocuk sınıf, herhangi bir protected veya public özellikleri ve onun üst yöntemleri devralır. Her şey beyan private kullanılamaz.

2) Bu doğru. Sürece sınıf yüklenir gibi (bu daha önce sizin autoloading soru ile iyi gider), bu gibi kapsam çözünürlük operatörü (::), aracılığıyla statik yöntemleri erişebilirsiniz: ClassName::methodName();

3) public doğru anlamını var, ama daha önce de belirttiğim gibi, private yöntemler sadece onlar içeri bildirilen sınıf tarafından kullanılabilir

class parentClass
{
     private $x;
     public $y;
}

class childClass extends parentClass
{    
    public function __construct() {
        echo $this->x;
    }
}

$z = new childClass();

$ X çocuğu olarak erişilebilir değil gibi Yukarıdaki kod, bir NOTICE hatası tetiklenir neden olur.

Notice: Undefined property: childClass::$x

$ X ilan edildi protected yerine, sonra da childClass erişimine sahip olacaktır. Edit: protected olarak bildirilen bir özellik bunu beyan sınıf tarafından ve bunu uzatmak herhangi bir alt sınıflar tarafından erişilebilir, ancak "dış dünya" aksi. Bu public ve private arasında güzel bir ara var.

Anladığım kadarıyla 1 için., Başka bir sınıfını genişleten bir sınıf sadece diğer sınıfını genişleten sınıf değişkenleri / özelliklerine ve bunun uzanan bir sınıfın fonksiyonları / yöntemlerine erişim anlamına gelir. Bu doğru mudur?

ANS: Bu doğru ama hepsi değil. Uzanan sınıfı da genişletilmiş sınıfının yöntemini geçersiz kılarak genişletilmiş sınıf özelleştirebilirsiniz. Ve ofcouse, aynı zamanda yeni alanlar ve yöntemler ekleyerek süper sınıf işlevlerini genişletebilirsiniz.

2 için. Statik bir yöntem veya özellik temelde bir sınıf dışında bir usul işlev veya değişken olarak aynıdır ve hemen hemen her yerde kullanılabilir olduğunu biliyoruz. Bu doğru mudur?

ANS: Evet bu doğru ve zombat sürece sınıf kamu ve yüklü ve özellik ve yöntem public olduğu gibi söyledi. Başka bir deyişle, bu unsurların ismi alanı olarak sınıfını kullanıyor.

3 için. Genel herhangi bir sınıf erişebilirsiniz gelir ve özel sadece kapsüllü edilir sınıf veya sahibinden genişletilmiş bir sınıf anlamına gelir erişebilir ve kullanabilirsiniz. Bu doğru mudur?

ANS: fiziksel özellikleri, ortak bir bilgisayarda (bir kütüphanede) olarak düşünün herkes ve özel bilgisayar tarafından kullanılabilir (supposibly), yalnızca sizin tarafınızdan kullanılabilir.

Zambat Yorumlarınız eklendi hemen için.

Genel bir kural kullanım yerine korumalı olarak özel bir şey bildirmek için çok az ihtiyaç var.