• 11-07-2010, 18:33:37
    #1
    merhaba arkadaşlar php.net'te söyle bir acıklama ile anlatılmıs

    final Anahtar Sözcüğü

    PHP 5 ile birlikte gelen diğer bir yenilik final anahtar sözcüğüdür. Bu anahtar sözcükle tanımlanmış bir yöntemi çocuk sınıflar geçersiz kılamazlar. Eğer bir sınıf kendini final sözcüğüyle tanımlamışsa o sınıf genişletilemez.
    Örnek 1 - final yöntem örneği
    <?php
    class AnaSınıf {
    public function
    deneme() {
    echo
    "AnaSınıf::deneme() çağrıldı\n";
    }

    final public function
    başkaDeneme() {
    echo
    "AnaSınıf::başkaDeneme() çağrıldı\n";
    }
    }

    class
    ÇocukSınıf extends AnaSınıf {
    public function
    başkaDeneme() {
    echo
    "ÇocukSınıf::başkaDeneme() çağrıldı\n";
    }
    }
    // Ölümcül hata ile sonuçlanır: AnaSınıf:başkaDeneme() final yöntemi
    // ÇocukSınıf::başkaDeneme() yöntemiyle geçersiz kılınamaz
    ?>





    ama kafam basmadı sizlerden ricam nedir bu final deyimi alt sınıflardaki etkisini çözemedim
  • 11-07-2010, 21:04:01
    #2
    Üyeliği durduruldu
    final class ya da metodlar kalıtıma sokulamaz. phpde türetilen alt sınıflarda yazılan her metod ana sınıftaki metodları bastırır

    class A
    {
         public function yaz()
    {
       echo "yaz() metodu çağrıldı A sınıfındayz.";
    }
     }
    class B extends A
    {
       public function yaz()
    {
       echo "yaz() metodu çağrıldı B sınıfındayız.";
    }
    }

    A dan B yi türettik. ikisinde de yaz() var ama B sınıfında bu bastırıldı . artık $obje->yaz dediğiimizde B sınıfındaki metod çalışacaktır. bunun bu şekilde kullanılmasını istemiyorsak
    metodun başına final yazıyoruz. override edilemiyor.
  • 11-07-2010, 21:53:37
    #3
    D3LLy adlı üyeden alıntı: mesajı görüntüle
    final class ya da metodlar kalıtıma sokulamaz. phpde türetilen alt sınıflarda yazılan her metod ana sınıftaki metodları bastırır

    class A
    {
         public function yaz()
    {
       echo "yaz() metodu çağrıldı A sınıfındayz.";
    }
     }
    class B extends A
    {
       public function yaz()
    {
       echo "yaz() metodu çağrıldı B sınıfındayız.";
    }
    }
    A dan B yi türettik. ikisinde de yaz() var ama B sınıfında bu bastırıldı . artık $obje->yaz dediğiimizde B sınıfındaki metod çalışacaktır. bunun bu şekilde kullanılmasını istemiyorsak
    metodun başına final yazıyoruz. override edilemiyor.


    yine bişi anlamadım benim anladıgım bu deyimi kullanınca ana sınıf özel kalıyor yani altına çocuk sınıf olusturulamıyor ?


    <?php 
    
    class A
    {
        final public function yaz()
    {
       echo "yaz() metodu çağrıldı A sınıfındayz.";
    }
     }  
     
     class B extends A
    {
       public function yaz()
    {
       echo "yaz() metodu çağrıldı B sınıfındayız.";
     
    }
    }  
    
    $new = new B();
    $new ->yaz();
    
    ?>
  • 11-07-2010, 22:11:47
    #4
    Üyeliği durduruldu
    ByTriSLaSiS adlı üyeden alıntı: mesajı görüntüle
    merhaba arkadaşlar php.net'te söyle bir acıklama ile anlatılmıs

    final Anahtar Sözcüğü

    PHP 5 ile birlikte gelen diğer bir yenilik final anahtar sözcüğüdür. Bu anahtar sözcükle tanımlanmış bir yöntemi çocuk sınıflar geçersiz kılamazlar. Eğer bir sınıf kendini final sözcüğüyle tanımlamışsa o sınıf genişletilemez.
    Örnek 1 - final yöntem örneği
    <?php
    class AnaSınıf {
    public function
    deneme() {
    echo
    "AnaSınıf::deneme() çağrıldı\n";
    }

    final public function
    başkaDeneme() {
    echo
    "AnaSınıf::başkaDeneme() çağrıldı\n";
    }
    }

    class
    ÇocukSınıf extends AnaSınıf {
    public function
    başkaDeneme() {
    echo
    "ÇocukSınıf::başkaDeneme() çağrıldı\n";
    }
    }
    // Ölümcül hata ile sonuçlanır: AnaSınıf:başkaDeneme() final yöntemi
    // ÇocukSınıf::başkaDeneme() yöntemiyle geçersiz kılınamaz
    ?>





    ama kafam basmadı sizlerden ricam nedir bu final deyimi alt sınıflardaki etkisini çözemedim
    anlaman için fonk. yerine class için kullandım final özelliğini.

    final class AnaSınıf {...}
    class ÇocukSınıf extends AnaSınıf {...} //Ölümcül hata
  • 11-07-2010, 22:16:42
    #5
    Üyeliği durduruldu
    çocuk sınıflar final tanımını geçersiz kılamıyor ve final ile tanımlanan class ı genişletemiyorsun. mevzuu bahis bu
    kafa karıştırıcı bir cümle olmuş Tebrik etmek lazım çeviri ekibini
  • 12-07-2010, 00:13:24
    #6
    BHCoder adlı üyeden alıntı: mesajı görüntüle
    çocuk sınıflar final tanımını geçersiz kılamıyor ve final ile tanımlanan class ı genişletemiyorsun. mevzuu bahis bu
    kafa karıştırıcı bir cümle olmuş Tebrik etmek lazım çeviri ekibini
    teşekkürler demekki dogru anlamışım
  • 12-07-2010, 08:55:29
    #7
    Üyeliği durduruldu
    Türkçeleştirecek olursak yolun sonu gibi düşünebilirsiniz. final edilmiş bir class genişletilemez. yani extend edilemez