Gå til innhold

Arv fra abstrakt klasse


Anbefalte innlegg

Jeg forsøker å lage et html-skjema ved hjelp av php5 og har laget klassene Form, Element, Checkbox, Input og Button.

Element er abstrakt og Checkbox og Input arver denne, Button arver igjen Input.

 

Men når jeg forsøker å kjøre koden min får jeg beskjed om at:

 

Fatal error: Class CheckBox contains 1 abstract methods and must therefore be declared abstract (Element::display) in c:\wamp\www\cms\lib\Form.php on line 37

 

 

Kode:

abstract class Element{
protected $value;
protected $name;

public function __construct($name="", $value=""){
 $this->name = $name;
 $this->value= $value;
}
abstract protected function display();

}

 

class CheckBox extends Element{
public function diplay(){
 print "tull";
}
}

 

class Input extends Element{
protected $text;
protected $type;

public function __construct($text, $type, $name=null, $value=null){
 parent::__construct($text, $type, $name, $value);
}
public function diplay(){
print <<<ELEMENT
$this->text <input type="$this->type" name="$this->name" value="$this->value"><br />
ELEMENT;
}
}

 

class Button extends Input{
 public function __construct($text=null,$type=null, $name=null, $value=null){
 	parent::__construct($text, $type, $name,$value);
 }

}

 

 

Testen min:

$form = new Form();
$name = new Input("Brukernavn", "text","navn", "møkkaprogram");
$password = new Input("Passord", "password", "password");
$submit = new Button("", "submit", "submit", "trykk her");
$elements = array($name, $password, $submit);
$form->showForm($elements);

 

Noen som ser hva jeg gjør galt? Jeg har nemlig gjort akkurat det samme (protected abstract function ett_eller_annet(); og extends et annet sted og da funket det.

Lenke til kommentar
Videoannonse
Annonse

hæ? Det strider mot alle andre språk isåfall.

 

Dvs:

public er alltid public og tilgjengelig overalt.

protected er begrenset til klassen og subklasser, men kun direkte subklasse har tilgang. Subklasser til subklassen har ikke tilgang.

private er begrenset til klassen alene, og ingen andre.

Endret av Nazgul
Lenke til kommentar
hæ? Det strider mot alle andre språk isåfall.

 

Dvs:

public er alltid public og tilgjengelig overalt.

protected er begrenset til klassen og subklasser, men kun direkte subklasse har tilgang. Subklasser til subklassen har ikke tilgang.

private er begrenset til klassen alene, og ingen andre.

6166045[/snapback]

Jeg snakker om forhold mellom forelder og barn. Hvis forelder har en protected kan jeg ikke gjøre barnas variabel eller funksjon private.

 

Mulig jeg har misforstått ditt innlegg, eller du mitt.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...