PHP基础语法学习2_面向对象

PHP基础语法学习2_面向对象

构造函数

function __construct( $par1, $par2 ) {
   $this->url = $par1;
   $this->title = $par2;
}

析构函数

<?php
class MyDestructableClass {
   function __construct() {
       print "构造函数\n";
       $this->name = "MyDestructableClass";
   }
​
   function __destruct() {
       print "销毁 " . $this->name . "\n";
   }
}
​
$obj = new MyDestructableClass();
?>

继承

PHP 不支持多继承

class Child extends Parent {
   // 代码部分
}

接口

类可以实现多个接口,用逗号来分隔多个接口的名称。

<?php
​
// 声明一个'iTemplate'接口
interface iTemplate
{
    public function setVariable($name, $var);
    public function getHtml($template);
}
​
​
// 实现接口
class Template implements iTemplate
{
    private $vars = array();
  
    public function setVariable($name, $var)
    {
        $this->vars[$name] = $var;
    }
  
    public function getHtml($template)
    {
        foreach($this->vars as $name => $value) {
            $template = str_replace('{' . $name . '}', $value, $template);
        }
 
        return $template;
    }
}

抽象类

<?php
abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);
​
    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . PHP_EOL;
    }
}
​
class ConcreteClass1 extends AbstractClass
{
    protected function getValue() {
        return "ConcreteClass1";
    }
​
    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass1";
    }
}
​
class ConcreteClass2 extends AbstractClass
{
    public function getValue() {
        return "ConcreteClass2";
    }
​
    public function prefixValue($prefix) {
        return "{$prefix}ConcreteClass2";
    }
}
​
$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') . PHP_EOL;
​
$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') . PHP_EOL;
?>

调用父类构造方法

<?php
class BaseClass {
   function __construct() {
       print "BaseClass 类中构造方法" . PHP_EOL;
   }
}
class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
       print "SubClass 类中构造方法" . PHP_EOL;
   }
}
class OtherSubClass extends BaseClass {
    // 继承 BaseClass 的构造方法
}
​
// 调用 BaseClass 构造方法
$obj = new BaseClass();
​
// 调用 BaseClass、SubClass 构造方法
$obj = new SubClass();
​
// 调用 BaseClass 构造方法
$obj = new OtherSubClass();
?>

猜你喜欢

转载自blog.csdn.net/u011486491/article/details/81149324