Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Inheritance vs. interface dla takich samych metod., Klasy dziedziczące mają te same metody. Powinny dziedziczyć?
trzczy
post 12.12.2015, 13:32:56
Post #1





Grupa: Zarejestrowani
Postów: 460
Pomógł: 49
Dołączył: 5.06.2011

Ostrzeżenie: (0%)
-----


Kiedy klasy dziedziczące mają takie same metody, to lepiej by dziedziczyły te metody od klasy nadrzędnej, czy miały te metody "przykazane" przez interface i umieszczone w sobie? Takie 2 rozwiązania pokazuję poniżej. Które jest bardziej poprawne?
  1. //example 1
  2. interface Person {
  3. function getName();
  4. function setName($name);
  5. function getHobby();
  6. function setHobby($hobby);
  7. }
  8. class Person2 implements Person{
  9. private $name;
  10. private $hobby;
  11. public function getName()
  12. {
  13. return $this->name;
  14. }
  15. public function setName($name)
  16. {
  17. $this->name = $name;
  18. }
  19. public function getHobby()
  20. {
  21. return $this->hobby;
  22. }
  23. public function setHobby($hobby)
  24. {
  25. $this->hobby = $hobby;
  26. }
  27. }
  28. class Person3 implements Person{
  29. private $name;
  30. private $hobby;
  31. public function getName()
  32. {
  33. return $this->name;
  34. }
  35. public function setName($name)
  36. {
  37. $this->name = $name;
  38. }
  39. public function getHobby()
  40. {
  41. return $this->hobby;
  42. }
  43. public function setHobby($hobby)
  44. {
  45. $this->hobby = $hobby;
  46. }
  47. }
  48. //example 1 end
  49.  
  50. //example 2
  51. abstract class Human{
  52. protected $name;
  53. protected $hobby;
  54. public function getName()
  55. {
  56. return $this->name;
  57. }
  58. public function setName($name)
  59. {
  60. $this->name = $name;
  61. }
  62. public function getHobby()
  63. {
  64. return $this->hobby;
  65. }
  66. public function setHobby($hobby)
  67. {
  68. $this->hobby = $hobby;
  69. }
  70. }
  71. class Human1 extends Human{
  72. protected $name;
  73. protected $hobby;
  74. }
  75. class Human2 extends Human{
  76. protected $name;
  77. protected $hobby;
  78. }
  79. //example 2 end
  80.  
  81. //TESTING
  82. $Mark = new Person2();
  83. $Mark->setName('Mark');
  84. echo "{$Mark->getName()}<br>"; //Mark
  85. $Mark = new Human2();
  86. $Mark->setName('Mark');
  87. echo "{$Mark->getName()}<br>"; //Mark
  88.  


Z góry dziękuję
Go to the top of the page
+Quote Post

Posty w temacie
- trzczy   Inheritance vs. interface dla takich samych metod.   12.12.2015, 13:32:56
- - droslaw   W przykładzie, który podałeś klasy są identyczne d...   12.12.2015, 14:43:14
|- - trzczy   Cytat(droslaw @ 12.12.2015, 14:43:14 ...   12.12.2015, 15:32:26
- - Fred1485   Tak moimi słowami, klasę abstrakcyjną czy interfej...   12.12.2015, 15:41:38
- - Comandeer   Osobiście spotkałem się z podejściem, gdzie interf...   12.12.2015, 19:00:55
- - trzczy   Dzięki za odpowiedzi. Dla mnie wynika z tego, że n...   12.12.2015, 22:37:35
- - Damonsson   To nie jest kwestia żadnego wyboru. Do czego inneg...   13.12.2015, 00:36:28
|- - trzczy   Damonsson, nie rozumiesz pytania. Chodzi o dublowa...   13.12.2015, 01:07:19
- - viking   Ale Damansson dobrze Ci odpowiedział i według mnie...   13.12.2015, 10:42:44
|- - trzczy   Cytat(viking @ 13.12.2015, 10:42:44 )...   13.12.2015, 18:42:16
- - Comandeer   CytatW interface nie ma definicji metod. Są nazwy ...   13.12.2015, 18:53:29
- - Pyton_000   O jakim dublowaniu mówisz. Bo tutaj jedynie dublow...   13.12.2015, 19:08:52
- - droslaw   trzczy, Damansson ma rację, w tutorialu żadne meto...   13.12.2015, 22:18:07
- - trzczy   Cytat(Pyton_000 @ 13.12.2015, 19:08:5...   14.12.2015, 08:28:08
- - Pyton_000   Settery i gettery to nie problem. O ile nie mają s...   14.12.2015, 08:33:13
- - droslaw   Cytat(trzczy @ 14.12.2015, 08:28:08 )...   14.12.2015, 12:16:07
- - Matrix12   W przykładzie gdzie implementujesz interfejs chodz...   15.12.2015, 08:00:27
|- - trzczy   Jeszcze się gubię w tym branżowym słownictwie... ...   17.12.2015, 01:13:47
- - Pyton_000   Możesz nazwać jak chcesz np: StorageInterface Sto...   17.12.2015, 10:06:18
|- - trzczy   Cytat(Pyton_000 @ 17.12.2015, 10:06:1...   17.12.2015, 12:35:52
- - Pyton_000   tak, tylko weź pod uwagę to że samego Interface ni...   17.12.2015, 12:37:16
- - viking   Nie było przypadkiem w którymś PSR że interface ma...   17.12.2015, 12:50:28
- - Pyton_000   Było https://github.com/php-fig/fig-standards/bl...   17.12.2015, 14:01:21


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2024 - 13:58