一.抽象类
1.abstract:定义抽象类
2.类里面只要有抽象方法就要定义为抽象类
3.抽象类只能被继承,不能直接实例化
4.抽象方法必须在子类实现
5.抽象类的子类的可见性不能低于父类
6.抽象类的是public,子类只能是public.抽象类方法protected,子类只能是public/private。
7.子类继承父类(抽象),必须把抽象类的抽象方法重写一遍,用parent::来调用父类抽象方法。否则需手工重写。
<?php
//抽象类
//类中只要有抽象方法 就声明为抽象类
//抽象类只能被继承 不可以被实例化
abstract class P{
// protected 受保护的 只能本类和子类 父类中访问
protected $name;
public function __construct($name)
{
$this->name = $name;
}
public function getname(){
return $this->name;
}
abstract public function setname($value);
}
class S extends P{
public function __construct($name){
parent::__construct($name);
}
public function setname($value)
{
$this->name = $value;
}
}
$s = new S('33703259');
echo $s->getname();
echo '<hr>';
$s->setname('WJF');
echo $s->getname();
二.接口
1.接口中仅允许方法和常量
2.interface:指定某个类必须实现的方法,但不需要定义具体实现过程。类似抽象类
3.接口的方法为空
4.接口是类的代码模版,可以父子继承关系
5.implements 是实现接口的关键字
6.接口中的方法必须是抽象方法
7.如果仅实现接口中的部分方法,清用抽象类
8.接口不可以有普通方法和成员变量
9.接口可以同时继承和实现(先继承后实现),多个接口用逗号
<?php
//接口
//指定某个类重必须实现的方法 接口中不需要定义方法的具体实现过程
//接口只允许出现 方法 类变量
//可见性必须为 public 方法体必须为空
interface V{
public function A($A);
public function B($B);
}
class C implements V{
public $A;
public $B;
public function A($A){
$this->A = $A;
}
public function B($B)
{
$this->B = $B;
}
public function DIY(){
return 'A值: ' . $this->A . 'B值: ' . $this->B . 'PHP中文网';
}
}
$c = new C();
$c->A('aaaaa');
$c->B('BBBBB');
echo $c->DIY();
3.手抄作业