Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Roznica miedzy interfejsem i klasa abstrakcyjna
Vomit
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 23.01.2006

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


Witam,

Nigdzie nie moge doczytac jaka jest praktyczna roznica miedzy interfejsem i klasa abstrakcyjna. Teorie znam, interfejs definiuje nagłowki metod danej klasy, klasa abstrakcyjna ma wieksze mozliwosci, moze ponadto definiowac zawartosc metody.

Chodzi mi jednak jak to sie sprawdza w praktyce, kiedy zastosowac interfejs a kiedy klase abstrakcyjna, po co tak naprawde mam w ogole definiowac "ogolny zarys" klasy w interfejsie czy klsaie abstrakcyjnej?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
TomASS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Dam Ci definicję i przykład. Poprę się tym samym ksiązką "php 5 Nowe Możliwości"

1. Interfejsy
Przy pomocy interfejsów masz możliwość wymuszenia na klasach, aby posiadały niezbędne do współpracy z innymi elementami metody. Np. piszesz sklep i kążdy produkt musi mieć nazwę, cenę i numer identyfikacyjny. Robisz sobie interfejs:
  1. <?php
  2. interface Produkt{
  3.  public function getName();
  4.  public function getPrice();
  5.  public function getID();
  6. }
  7. ?>

We wnętrzu interfejsu definiuje się prototypy metod.
teraz każda klasa, która będzie implementowała ten interfejs musi posiadać podane metody. Np. klasa Book:
  1. <?php
  2. class Book implements Produkt{
  3. public function getName(){...}
  4. public function getPrice(){...}
  5. public function getID(){...}
  6. }
  7. ?>

Jeśli klasa nie będzie posiadała wszystkich metod wymieniony w interfejscie php wygeneruje błąd krytyczny.


2. Klasy abstrakcyjne
Klasy te mają to do siebie, że nie można stworzyć ich kopii. Np. robisz sobie klasę Ziemia.
  1. <?php
  2. abstract class Ziemia{
  3. abstract public function Wirowanie();
  4. abstract public function Uderzenie_komety();
  5. }
  6. ?>

Nie mogą istnieć dwie Ziemie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 3.10.2025 - 01:08