PHP 面向对象的特性 抽象类和接口
先看下普通的类的实现和重写
<?php header("Content-type:text/html;charset=utf-8"); class P { public $age; public $name = "我叫张三"; public function __construct() { $this->age = '初始化'; } public function action() { return '我要吃饭'; } } class C extends P { public $age; public function __construct() { $this->age = '重新初始化'; //如果想继续用父类的构造函数 不重写 // parent::__construct(); } public $name = "其实我是李四"; public function action() { return '其实我要睡觉了'; } } $o = new P; echo $o->age; echo '</br>'; echo $o->name; echo '</br>'; echo $o->action(); echo '</br>'; echo '</br>'; echo '</br>'; $o = new C; echo $o->age; echo '</br>'; echo $o->name; echo '</br>'; echo $o->action();
然后说下接口(作用就是 写的类必须实现 接口中的方法 其实就是实现类方法的规范)
<?php
header(“Content-type:text/html;charset=utf-8”);
interface P
{
public function action();
}
class C implements P
{
public function action()
{
return ‘我要睡觉了’;
}
}
class A extends C
{
public function action()
{
return ‘其实我要睡觉了’;
}
}
$o = new C;
echo $o->action();
echo ‘</br>’;
echo ‘</br>’;
$o = new A;
echo $o->action();
抽象类 你可以把他当成个类使用(他的abstract方法必须实现 跟interface一样)
<?php header("Content-type:text/html;charset=utf-8"); abstract class P { abstract public function action(); public function action11() { return '1111111'; } } class C extends P { public function action() { return '啊啊啊啊'; } public function action11() { return '3333333333'; } } $o = new C; echo $o->action11(); echo '</br>'; echo '</br>';
ps:抽象类和接口都不能直接实例化 不用多继承的情况下 抽象类比较好用
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/19021.html