Slutligt nyckelord
Hoppa till navigering
Hoppa till sök
Final-nyckelordet
Nyckelordet `final` förhindrar barnklasser från att åsidosätta en metod eller konstant genom att sätta final framför definitionen. Om klassen själv definieras som final kan den inte utökas.
Exempel #1: Finala metoder
<?php class BaseClass { public function test() { echo "BaseClass::test() anropad\n"; } final public function moreTesting() { echo "BaseClass::moreTesting() anropad\n"; } } class ChildClass extends BaseClass { public function moreTesting() { echo "ChildClass::moreTesting() anropad\n"; } } // Resulterar i ett fatalt fel: Kan inte åsidosätta final-metoden BaseClass::moreTesting() ?>
Exempel #2: Finala klasser
<?php final class BaseClass { public function test() { echo "BaseClass::test() anropad\n"; } // Eftersom klassen redan är final är final-nyckelordet överflödigt final public function moreTesting() { echo "BaseClass::moreTesting() anropad\n"; } } class ChildClass extends BaseClass { } // Resulterar i ett fatalt fel: Klassen ChildClass kan inte ärva från final-klassen (BaseClass) ?>
Exempel #3: Finala konstanter från och med PHP 8.1.0
<?php class Foo { final public const X = "foo"; } class Bar extends Foo { public const X = "bar"; } // Fatalt fel: Bar::X kan inte åsidosätta final-konstanten Foo::X ?>
Notera: Egenskaper kan inte deklareras som finala: endast klasser, metoder och konstanter (från och med PHP 8.1.0) kan deklareras som finala. Från och med PHP 8.0.0 kan privata metoder inte deklareras som finala, förutom konstruktorn.
Sidslut
Orginalhemsidan på Engelska : https://www.php.net/manual/en/language.oop5.final.php
PHP
Språkreferens
Språkreferens#Klasser_och_Objekt
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/