一、为什么设计抽象类这个技术?
在实际开发中,我们可能有这样一种类,是其他类的父亲,但他本身并不需要实例化,主要用途是用于让子类来继承,这样可以达到代码复用,同时利于项目设计者、设计类。
abstract class Animal {
public $name;
protected $age;
//这个方法没有方法体,主要是为了让子类去实现
abstract public function cry();
}
class Cat extends Animal {
public function cry() {
echo "猫猫叫";
}
}
$cat = new Cat();
$cat -> cry();
二、接口:
1、基本语法:
interface 接口名 {
//属性
//方法
}
2、接口的方法不能有方法体。
3、如何去实现方法?
class 类名 implements 接口名1,接口名2 {
}
4、接口的作用是:声明一些方法,供其他类来实现,接口还体现高内聚低耦合的特点;
5、什么情况下可以考虑使用接口?
(1)定规范;
(2)定下规范让别的开发者来实现。
6、当多个类,他们之间是平级的关系,这些类都会去实现某个功能,只是实现的方式不一样。
<?php
//使用程序模拟现实情况
//定义规范(方法/属性),首字母小写
interface iUsb {
public function start();
public function stop();
}
//编写手机类,实现接口
//1、当一个类实现某个接口,则要求该类必须实现这个接口的所有的方法
class Phone implements iUsb {
public function start() {
echo "手机开始工作了<br/>";
}
public function stop() {
echo "手机停止工作了<br/>";
}
}
//2、编写相机类实现
Class Camera implements iUsb {
public function start() {
echo "相机开始工作了<br/>";
}
public function stop() {
echo "相机停止工作了<br/>";
}
}
$phone = new Phone();
$phone -> start();
$phone -> stop();
$camera = new Camera();
$camera -> start();
$camera -> stop();
?>
接口的细节:
常量前面不能加$,在接口内定义常量并得出时可以使用 接口名::常量名;