Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP - "Son" Anahtar Kelime

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,439
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,280
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 6 Gün
Başarım Puanı
1,051
MmoLira
695,092
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

maxresdefault.jpg



PHP'de "final" anahtar kelimesi bir sınıfın, bir sınıfın içindeki bir metodun, ve bir sınıfın sabit bir özelliğinin tanımlanmasında kullanılır.

"final" Anahtar Sözcüğüne Sahip Bir Sınıf

"Final" anahtar sözcüğüyle bir sınıfın nasıl oluşturulacağına bakalım.

final class myclass {
/*class members*/
}

Sınıf tanımındaki "final" anahtar sözcüğü böyle bir sınıfın genişletilmesini engeller. Başka bir deyişle, final sınıfını ebeveyn olarak kullanamazsınız. Denerseniz, PHP ayrıştırıcısı bir hata verir.

PHP:
<?php
   final class myclass {
 
      /* class body */
   }
   class newclass extends myclass {
 
      /* class body */
   }
?>

Bu kodu çalıştırdığınızda bir hata gösterecektir:

PHP Fatal error: Class newclass may not inherit from final class (myclass)


"final" Anahtar Kelimeli Yöntem

"final" anahtar sözcüğüyle bir yöntem oluşturmanın yolu şöyledir:

class myclass {
final function myfunction() {

/* function body */
}
}

Bir yöntem tanımının önüne final anahtar sözcüğünü eklemek, bir alt sınıfta geçersiz kılınmasını önler. Final yöntemi olan bir sınıf genişletilebilir, ancak alt sınıf onu geçersiz kılamaz.

Örnek

Aşağıdaki örneğe bir göz atın.

PHP:
<?php
   class myclass {
      final public function hello() {
         echo "Hello World!";
      }
   }
   class newclass extends myclass {
      public function hello() {
         echo "Hello PHP!";
      }
   }
?>

Bu kodu çalıştırdığınızda bir hata gösterecektir:

PHP Fatal error: Cannot override final method myclass::hello() in hello.php

"final" Anahtar Kelimesi ile Sabit

PHP 8.1.0'dan itibaren final anahtar sözcüğü ile bir sınıfta sabit de tanımlayabilirsiniz.

final public const NAME = "My Class";

Üst sınıftaki son sabiti alt sınıfta geçersiz kılmaya çalışırsanız bir hatayla karşılaşılır.

PHP:
<?php
   class myclass {
      final public const NAME = "My Class";
      final public function hello() {
         echo "Hello World!";
      }
   }

   class newclass extends myclass {
      public const NAME = "New Class";
   }
?>

Bu kodu çalıştırdığınızda bir hata gösterecektir:

Fatal error: newclass::NAME cannot override final constant myclass::NAME

Örnek

Aşağıdaki PHP betiği, bir PI sabiti ve her ikisi de final olarak bildirilen area() metoduna sahip bir ebeveyn sınıfı olan ellipse içerir. Bunlar circle sınıfı tarafından miras alınır. area() fonksiyonu circle'ın alanını hesaplar.

PHP:
<?php
   class ellipse {
      final public const PI=22/7;
      private float $a, $b;
      public function __construct($x, $y) {
         $this->a = $x;
         $this->b = $y;
      }
      final public function area() : float {
         return self::PI*$this->a*$this->b;
      }
   }
   class circle extends ellipse {
      public function __construct(float $x) {
         parent::__construct($x, $x);
      }
   }
   $c1 = new circle(5);
   echo "Area: " . $c1->area() . PHP_EOL;
?>

Aşağıdaki çıktıyı üretecektir:

Area: 78.571428571429

Bir sınıfın örnek değişkenlerinin veya özelliklerinin final olarak bildirilemeyeceğini unutmayın.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst