The_HulkMedlem sedan juni 20031 937 inlägg Hej!
Om jag har klasserna A och B, B ärver från A.
Om jag vill skicka vidare argumenten från B:s konstruktor, vilket är bäst att lösa det på, alt 1 eller alt 2? Under förutsättning att inte A:s konstruktor gör något annat med argumentet.
class A
{
var $my_text;
function A($text)
{
// do something with $text
$this->my_text = $text;
}
}
class B extends A
{
function B($text)
{
parent::A($text); // alt 1
// or
$this->my_text = $text; // alt 2
}
}
Tack på förhand!
spangoMedlem sedan juni 20006 147 inlägg Beror på. Vill du i klass B vara säker på att allt initieras som i A, ska du använda alt. 1. Vill du å andra sidan vara säker på att det enda som händer i konstruktorn är att my_text får ett värde är alt. 2 att föredra. I den riktiga världen är det i princip bara alt. 1 som används, eftersom det är ganska sopig OO att utgå ifrån att man vet vad som händer inuti en annan metod.
I en del språk (främst hårt typade och kompilerade språk som C++, Java, C# etc) måste man anropa en konstruktor i föräldraklassen oavsett vad man gör, så där är problemet på sätt och vis löst, men i språk som inte kräver det anses det allmänt vara god ton att anropa en parent-konstruktor för att man ska vara säker på att superklassdelen är korrekt initialiserad.