PHP/Class/Class Inheritance — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 07:00, 26 мая 2010
Содержание
Class inheritance in action
<?php
class AbstractClass {
function abstractFunction() {
die( "AbstractClass::abstractFunction() is abstract\n" );
}
}
class ConcreteClass extends AbstractClass {}
$test = new ConcreteClass();
$test->abstractFunction();
Create two child classes
<?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;
?>
Improved Inheritance: call parent constructor
<?php
class shape
{
var $x;
var $y;
function shape($x, $y) {
$this->move_to($x, $y);
print("Shape constructor called <br />");
}
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() . "<br />");
}
function draw()
{}
}
class rectangle extends shape
{
function rectangle($x, $y) {
parent::shape($x, $y);
}
function draw() {
print("Drawing rectangle at " . $this->x . ":" .
$this->y . "<br />");
}
function print_data() {
print("Rectangle currently at " . $this->get_x() . ":" .
$this->get_y() . "<br />");
}
}
$rect1 = new rectangle(100, 100);
$rect1->draw();
$rect1->print_data();
?>
Inheriting a Shape Class
<?php
class shape {
var $x;
var $y;
function shape() {
print("Shape constructor called <br />");
}
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() . "<br />");
}
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 . "<br />");
}
function print_data() {
print("Rectangle currently at " . $this->get_x() . ":" .
$this->get_y() . "<br />");
}
}
$rect1 = new rectangle(100, 100);
$rect1->draw();
$rect1->print_data();
?>