Scusate se continuo la discussione ma sono arrivato al capitolo Classi Astratte e ho di nuovo combinato un casino

Posso chiedere a voi che ne sapete piu di me di dare un'occhiata la codice per vedere quale cavolata io abbia fatto?
Mi sembra sia abbastanza simile alle interfacce ma non capisco come mai non funzioni nulla

Codice PHP:
<?php
abstract class misfits {    
protected abstract 
$name;    
protected abstract 
$power;        

public abstract function 
__construct($name$power){        
$this->name $name;        
$this->power $power;        
print (
"Abbiamo creato " $name " un eroe<br>")    
}       

public abstract function 
role();
}

class 
hero extends misfits{        
public function 
__construct($name$power){        
$this->name $name;        
$this->power $power;        
print (
"Abbiamo creato " $name " un eroe<br>")    
}        

public function 
role(){        
return (
$this->name " è un eroe e il suo potere è: " $this->power "<br><br>");    
}
}

class 
villain extends misfits{        
public function 
__construct($name$power){        
$this->name $name;        
$this->power $power;        
print (
"Abbiamo creato " $name " un antagonista<br>")    
}        

public function 
role(){        
return (
$this->name " è un antagonista e il suo potere è: " $this->power "<br><br>");    
}
}
?>
codice HTML:
<html>    <head>        <title>CLASSI ASTRATTE</title>    </head>    <body bgcolor="#AABB00" text="#FFFFFF">
Codice PHP:
<?php
$samuel 
= new hero ("Samuel""Invisibilità");print $samuel->role();
$nathan = new hero ("Nathan""Immortalità");print $samuel->role();
$brian = new villain ("Brian""Milkchinesis");print $brian->role();
?>
codice HTML:
    </body></html>