Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dziedziczenie klas wewnątrz klas, poprzez analogię do C++
Aztech
post 29.11.2005, 00:10:19
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


Chciałbym się dowiedzieć, czy w PHP5 da się zrobić coś co w językach obietkowych jest oczywiste (C++, object Pascal dla Delphi), tzn czy zmienne mogą dziedziczyć po klasach?

Napisałem cosik takiego: jest to bardziej idea niż kod, mam nadzieję, że to Wam rozświetli co mam na myśli.

  1. <?php
  2.  
  3.  
  4. // definiuje klasę potomka
  5. class TDziecko {
  6.  
  7. private $wiek=0;
  8.  
  9. private function ileLat() {
  10. return $this->wiek;
  11. }
  12. }
  13.  
  14. //definiuje klasę rodzica
  15. //rodzic może meić tylko 1 dziecko, dziecko powinno dziedziczyć po klasie TDziecko
  16.  
  17. class TRodzic {  
  18. private $dziecko extends TDziecko;
  19. private function potomstwo() {
  20. if ($this->dziecko->ileLat() != 0) return true; else return false;
  21. }
  22.  
  23. }
  24.  
  25. ?>
Go to the top of the page
+Quote Post
mike
post 29.11.2005, 00:14:39
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


1. Pascal jest jązykiem obiektowym? Pierwsze słyszę.
2. To co pokazałeś to jest (z tego co wiem) niemożliwe w żadnym języku programowania.
3. Tobie chyba chodzi o to żeby pole $dziecko klasy TRodzic było typu obiektowego, a dokładniej żeby było instancją klasy TDziecko.
Go to the top of the page
+Quote Post
Aztech
post 29.11.2005, 00:36:36
Post #3





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


[OT] mode on
ad 1. Pascal nie, ale Object Pascal używany w Borladn Delphi tak.
ad 2. Z tego co mi wiadomo to w C++ pola prywatne mogą dziedziczyć po klasach, tzn pole wewnątrz klasy może mieć typ pochodzący od klasy.
[OT] mode off
ad 3. Dokładnie, tylko nie wiedzialem jak to ująć (nazwać) i nadal nie wiem jak to zrobić sad.gif

Ten post edytował Aztech 29.11.2005, 00:38:12
Go to the top of the page
+Quote Post
dr_bonzo
post 29.11.2005, 00:43:17
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


W php zmienne nie maja przypisanego typu na stale tak jak w C/Java/Pascal.

  1. <?php
  2. class TRodzic {       
  3. //...
  4. public function __construct()
  5. {
  6.    $this->dziecko = new TDziecko(); // dziecko bedzie obiektem klasy TDziecko
  7. }
  8.     private $dziecko; // tutaj chyba sie nie da "new TDziecko()", przynajmniej nigdy tak nie robilem
  9. }
  10.   
  11. ?>

o to chodzilo?

Cytat
ad 2. Z tego co mi wiadomo to w C++ pola prywatne mogą dziedziczyć po klasach, tzn pole wewnątrz klasy może mieć typ pochodzący od klasy.

Klase traktuj jak kazdy inny typ zmiennej, a obiekt jak kazda inna zmienna
Kod
class Klasa
{
private:
int liczbaCzegostam;
TDziecko dziecko;
}


Ten post edytował dr_bonzo 29.11.2005, 00:47:03


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Aztech
post 29.11.2005, 00:54:16
Post #5





Grupa: Zarejestrowani
Postów: 276
Pomógł: 3
Dołączył: 22.10.2003
Skąd: Wrocław

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


@dr_bonzo: tak o to (przynajmniej tak wygląda, rano sprawdzę, jak to działa w praktyce, a teraz czas spać biggrin.gif)
Go to the top of the page
+Quote Post
mike
post 29.11.2005, 08:10:11
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


To może ty zamiast sprawdzić czy to działa poczytaj najpierw co to jest dziedziczenie, co oznacza że zmienna jest jakiegoś typu, ...

Bo używasz pojęć mieszając je bez sensu. I wychodzą głupoty.

Pole klasy nie dziedziczy - pole jest jakiegoś typu. Może to być w szczególności typ obiektowy.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.07.2025 - 10:02