PHP/Class/Class Inheritance — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
(нет различий)
|
Текущая версия на 10:00, 26 мая 2010
Содержание
Class inheritance in action
<source lang="html4strict">
<?php class AbstractClass {
function abstractFunction() { die( "AbstractClass::abstractFunction() is abstract\n" ); }
} class ConcreteClass extends AbstractClass {} $test = new ConcreteClass(); $test->abstractFunction();
</source>
Create two child classes
<source lang="html4strict">
<?php
class vehicle{ var $brand_name; var $number_of_wheels; var $seating_capacity; } class car extends vehicle { var $doors; var $prooftype; var $powersteering; var $powerwindows; } class motorbike extends vehicle { var $engine; } $merk= new car; $dukat=new motorbike;
?>
</source>
Improved Inheritance: call parent constructor
<source lang="html4strict">
<?php
class shape { var $x; var $y; function shape($x, $y) { $this->move_to($x, $y); print("Shape constructor called
"); } function get_x() { return $this->x; } function get_y() { return $this->y; } function set_x($x) { $this->x = $x; } function set_y($y) { $this->y = $y; } function move_to($x, $y) { $this->x = $x; $this->y = $y; } function print_data() { print("Shape is currently at " . $this->get_x() . ":" . $this->get_y() . "
"); } function draw() {} } class rectangle extends shape { function rectangle($x, $y) { parent::shape($x, $y); } function draw() { print("Drawing rectangle at " . $this->x . ":" . $this->y . "
"); } function print_data() { print("Rectangle currently at " . $this->get_x() . ":" . $this->get_y() . "
"); } } $rect1 = new rectangle(100, 100); $rect1->draw(); $rect1->print_data();
?>
</source>
Inheriting a Shape Class
<source lang="html4strict">
<?php
class shape { var $x; var $y; function shape() { print("Shape constructor called
"); } function get_x() { return $this->x; } function get_y() { return $this->y; } function set_x($x) { $this->x = $x; } function set_y($y) { $this->y = $y; } function move_to($x, $y) { $this->x = $x; $this->y = $y; } function print_data() { print("Shape is currently at " . $this->get_x() . ":" . $this->get_y() . "
"); } function draw() {} } class rectangle extends shape { function rectangle($x, $y) { $this->move_to($x, $y); } function draw() { print("Drawing rectangle at " . $this->x . ":" . $this->y . "
"); } function print_data() { print("Rectangle currently at " . $this->get_x() . ":" . $this->get_y() . "
"); } } $rect1 = new rectangle(100, 100); $rect1->draw(); $rect1->print_data();
?>
</source>