抽象类
相对于一个类的模板,定义类的规范,细节
- 抽象类不能实例化,只能通过继承的方式使用
- 抽象类里面可以有已经实现的方法 但只要有一个抽象方法,这个类还是抽象类
- 子类继承的抽象类方法必须全部实现
- 子类方法参数必须与抽象类方法参数完全一致,可以增加默认参数
- 抽象类中可有属性
语法格式
abstract class Classname
<?php
abstract class Db {
abstract public function connect($data);
abstract public function add();
public function test(){
echo "test";
}
}
class Mysql extends Db{
public function connect($data){
echo $data;
}
public function add(){
echo "add";
}
}
$mysql = new Mysql();
$mysql->test();
$mysql->connect('mysql');
$mysql->add();
接口
接口可以理解为方法的模板,用于描述通用的方法
- 每一个接口都是一个方法
- 接口可实现可不实现 ,但是继承的接口必须全部实现
- 接口里面的必须是权限修饰符必须是public
- 接口可有类常量
- 接口不能有属性,已经实现的方法
语法格式
interface methodName
实现接口
class ClassName implements method1,method2,methodn{}
<?php
interface shower{
const PI = 3.14;
public function show($arg);
}
interface runer{
public function run();
}
class Animal implements shower,runer{
//implements接口必全部实现
public function show($arg){
echo $arg;
}
public function run(){
echo Animal::PI."跑";
}
}
$animal = new Animal();
$animal->show('23');
$animal->run();
在抽象类实现接口
<?php
interface shower{
const PI = 3.14;
public function show($arg);
}
abstract class Test implements shower {
abstract public function run();
}
class My extends Test{
public function run(){
echo "跑";
}
public function show($arg){
echo $arg;
}
}
$t = new My();
$t->run();
$t->show("显示");