Dziedziczenie a klonowanie

Założenie: Pokażemy, jak klonowanie obiektu klasy pochodnej różni się od klonowania obiektu klasy bazowej, uwzględniając dziedziczenie.

Krok po kroku:

  1. Definicja klasy bazowej: Tworzymy klasę bazową Animal z metodą __clone().
  2. 
    name = $name;
            $this->age = $age;
        }
    
        public function __clone() {
            echo "Klonuję obiekt klasy Animal\n";
        }
    }
    ?>
    				
  3. Definicja klasy pochodnej: Tworzymy klasę pochodną Dog dziedziczącą po Animal, dodając atrybut breed.
  4. 
    breed = $breed;
        }
    
        public function __clone() {
            echo "Klonuję obiekt klasy Dog\n";
            // Głębokie klonowanie dla atrybutu breed (jeśli potrzebne)
            // $this->breed = clone $this->breed; 
        }
    }
    ?>
    				
  5. Tworzenie i klonowanie obiektu: Tworzymy obiekt klasy Dog i jego klon.
  6. 
    name . ", rasa: " . $dog->breed . "\n";
    echo "Sklonowany pies: " . $clonedDog->name . ", rasa: " . $clonedDog->breed . "\n";
    ?>
    				
  7. Wynik: Wyświetlamy informacje o oryginalnym i sklonowanym obiekcie. Zauważ, że metoda __clone() z klasy Dog jest wywoływana.

Ten przykład pokazuje podstawy klonowania obiektów w PHP, uwzględniając dziedziczenie. Pamiętaj, że __clone() pozwala na kontrolowanie procesu klonowania i zapewnienie głębokiego klonowania złożonych atrybutów, unikając odwołań do tych samych obiektów w oryginale i klonie.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *