PHP Final 類別是一個防止僅透過定義的 Final 前綴覆蓋子類別的方法的類別。這意味著如果我們定義一個帶有final前綴的方法,那麼它將防止重寫該方法。通常,PHP OOP 概念的繼承將允許類別層次結構內的巨大靈活性。您可以建立一個或多個用於擴展基類功能的子類,但 PHP 的 OOP 概念提供了一種創建不可擴展類的方法。這樣的課程稱為 Final Class/Final Classes。
廣告 該類別中的熱門課程 PHP 開發人員 - 專業化 | 8 門課程系列 | 3次模擬測驗開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
文法:
final class Pavan{ }
final public function set_bike(){}
PHP Final Class 是基於聲明工作,只需在類詞前面添加 FINAL 關鍵字即可。 Final Class 無需延長課程即可進行。子類別不能重寫final方法。普通類別變數不能用於宣告為final。 PHP Final 類別或方法不能像其他普通類別一樣進行擴充。如果使用任何其他普通類別擴充 Final 類,則 Final 類別將導致 PHP 在瀏覽器輸出中傳回 FATAL ERROR。最終方法也是如此。
以下是下面給出的範例:
這裡使用類別之前的final關鍵字建立了一個類別。最後一個類別「Automobile1」無法擴充。在最終類別內部,建立最終方法/函數。然後使用方法/函數建立普通類別“Bmwcar1”,然後在段落標籤內建立最終方法/函數。然後創建一個類別“Tata1”來擴展“Bmwcar1”,它具有正常的函數/方法“display()”,但在Tata1 類別中沒有建立price()方法,因為呼叫它會因為final關鍵字而提供致命錯誤。它是不可擴展的。然後建立/建立“$bmwcar1”物件。呼叫display()方法和final方法的price()是從「Bmwcar1」和「tata1」類別完成的。
代碼:
<?php final class Automobile1{ final public function set_color1(){ } final public function show1(){ } } class Bmwcar1{ public function display1(){ echo "This is the bmwcar1 class \n";} final public function price1(){echo "This is the bmwcar1 class's final price method \n";} } class Tata1 extends Bmwcar1{ public function display1(){ echo "This is tata1 class \n";} } $bmwcar1 = new Bmwcar1(); $tata1 = new Tata1(); $bmwcar1->display1(); $bmwcar1->price1(); $tata1->display1(); $tata1->price1(); ?>
輸出:
這裡使用 FINAL 關鍵字建立「A1」類別。然後使用兩個變數建立普通函數“show1()”。其中變數的總和將儲存在 $sum1 變數中。然後 echo 函數用於列印變數值總和。然後建立“B1”類別來擴展“A1”類別。在「B1」類別中,變數的乘法完成並保存在 $multi1 變數中。使用回顯功能列印乘法結果,但在這裡我們用普通類別“B1”擴展最終類別“A1”。在這裡我們擴充了 FINAL 類別/方法。它會傳回致命錯誤,因為我們擴展了 FINAL 類別。
代碼:
<?php final Class A1 { function show1($x1,$y1) { $sum1=$x1+$y1; echo "Sum of the given no.s = ".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $multi1=$x1*$y1; echo "The Multiplication of the given no.s = ".$multi1; } } $obj1= new B1(); $obj1->show1(1001,1001); ?>
輸出:
這裡創建了一個帶有函數 e($xx1) 的普通類別“C1”,然後創建了一個類別“D1”來擴展類別“C1”以使用“C1”參數。因此,類別“D1”將繼承“C1”類別屬性,並且還將包含“D1”類別屬性。到目前為止,一切都是正確的。然後建立一個類別“A1”,其中包含最終函數/方法,其中包含“x1”、“y1”變量,用於計算變數總和。建立“B1”類別後,將擴展“A1”類別。但最終的類別、方法是不可擴展的。如果嘗試,將會發生致命錯誤。
代碼:
<?php class C1 { function e($xx1){ echo 'The value of xx1 variable value'.$xx1; } } class D1 extends C1 { function e($xx1){ $f=2*$xx1; echo 'The double value of f (xx1)'.$f; } } class A1 { final function show($x1,$y1) { $sum1=$x1+$y1; echo "Sum of given no=".$sum1; } } class B1 extends A1 { function show($x1,$y1) { $mult1=$x1*$y1; echo "Multiplication of given no=".$mult1; } } $obj=new D1(); $obj->e(13); $obj= new B1(); $obj->show(100,100); ?>
輸出:
在下面的範例中,首先建立一個普通類,然後在其中使用兩個變數建立一個最終方法,以計算兩個變數值的總和,然後在其中建立一個新方法/函數普通類別將兩個變數值相乘並傳回結果。這裡只創建和調用最終方法,甚至沒有擴展,因此不會出現錯誤。將列印變數的總和以及變數的乘法。
代碼:
<?php class BaseClassone{ final function calculateone($val11,$val12){ $sum1 = $val11+$val12; echo "Sum of the given nums = ".$sum1; } function showone($x1,$y1){ $multip1=$x1*$y1; echo "Multiplication of the given nums = ".$multip1."\n"; } } $obj= new BaseClassone(); $obj->showone(12,12); $obj->calculateone(10,10); ?>
輸出:
PHP Final Class 概念是獨特的,並且像普通類別一樣不可擴展。就像 Final 類別一樣,Final 方法也不能以獨特的方式擴展。 PHP Final Class 概念將防止大量繼承功能並鼓勵組合。 Final Class 的所有公共 API 都是介面的一部分。它有助於封裝。最終的類別/方法將防止該類別/方法覆蓋子類別/方法。 PHP 最終類別將防止利用。儘管最終類別無法擴展,但這些最終類別在某些條件下是可以擴展的。這就像 Final 類別可以成為或可以成為子類,但不能成為超類別。
PHP Final 關鍵字甚至可以放置在存取說明符之前或之後。 PHP 最終方法也不應該有特定的回傳類型和方法名稱。
以上是PHP 期末班的詳細內容。更多資訊請關注PHP中文網其他相關文章!