Ik ben een beetje bezig met objectgeorienteerd programmeren maar ik kan er maar niet over uit wat het voor of nadeel is van abstracte classes tegenover interfaces.
Als je nu plantachtigen hebt, die moeten allemaal een zelfde patroon volgen:
Er gebeurt hetzelfde. En als ik een method vergeet te implementeren dan gebeurt er bij beide:
Een abstracte class kan alleen nog wat methodes al geimplementeerd hebben (voordeel), maar dan is toch het hele concept van een interface overbodig?
Kan iemand dat uitleggen?
Als je nu plantachtigen hebt, die moeten allemaal een zelfde patroon volgen:
PHP:
Maar ik kan net zo goed een interface maken: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| abstract class Plantachtig { abstract public function __construct(); abstract public function __destruct(); abstract public function knak(); } class Plant extends Plantachtig { public function __construct() { echo "Plant zegt hallo.\n"; } public function __destruct() { echo "Plant is dood gegaan\n"; } public function knak() { echo "Plant knakt om\n"; } } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| interface Plantachtig2 { public function __construct(); public function __destruct(); public function knak(); } class Plant2 implements Plantachtig2 { public function __construct() { echo "Plant-interfaced zegt hallo.\n"; } public function __destruct() { echo "Plant-interfaced is dood gegaan\n"; } public function knak() { echo "Plant-interfaced knakt om\n"; } } |
Er gebeurt hetzelfde. En als ik een method vergeet te implementeren dan gebeurt er bij beide:
Ik snap niet wat het voordeel of nadeel is van een interface tegenover een abstracte class.Fatal error: Class Plant contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Plantachtig::knak) in Q:\www\abstract\abstract.php on line 24
Fatal error: Class Plant2 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Plantachtig2::knak) in Q:\www\abstract\abstract.php on line 46
Een abstracte class kan alleen nog wat methodes al geimplementeerd hebben (voordeel), maar dan is toch het hele concept van een interface overbodig?
Kan iemand dat uitleggen?
[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]