php面向对象之抽象类接口.doc
文本预览下载声明
php面向对象之抽象类、接口
抽象类
为什么设计抽象类这个技术?
在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是用于让子类来继承,这样可以到达代码复用. 同时利于项目设计者,设计类.
/在实现方法覆盖的时候,访问修饰符可以不一样
//但是必须满足: 子类的访问范围=父类的访问范围
abstract class Animal{
public $name;
protected $age;
//这个方法没有方法体,这个方法主要是为了让子类去实现.
abstract public function cry();
}
class Cat extends Animal{
public function cry(){
echo 猫猫叫唤..;
}
}
//创建一个子类实例
$cat1=new Cat();
$cat1-cry();
使用抽象类的注意事项:
基本用法
abstract class 类名{
//方法 []
//属性 []
}
如果一个类使用abstract 来修饰,则该类就是抽象类, 如果一个方法被abstract修饰,则该方法就是抽象方法【抽象方法就不能有方法体.】
抽象类可以没有抽象方法.同时还可以有实现了的方法.
?php
//在实现方法覆盖的时候,访问修饰符可以不一样
//但是必须满足: 子类的访问范围=父类的访问范围
abstract class Animal{
public $name=abc;
protected $age;
//这个方法没有方法体,这个方法主要是为了让子类去实现.
abstract public function cry();
public function getName(){
return $this-name;
}
}
class Cat extends Animal{
public function cry(){
echo 猫猫叫唤..;
}
}
//创建一个子类实例
$cat1=new Cat();
$cat1-cry();
echo $cat1-getName();
如果一个类中,只要有抽象方法,则该类必须声明为abstract
abstract class A{
abstract function test();
}
echo ok;
如果A类继承了一个抽象类 B,则要求A类实现从B类继承的所有抽象方法
案例:
//这是一个抽象类
abstract class A{
abstract function test();
}
//B类要么自己抽象,或者实现从A类继承的抽象方法.
class B extends A{
function test(){
echo 我实现A:test();
}
}
echo hello;
接口
?php
//使用程序模拟现实情况
//定义规范(方法/属性)
interface iUsb{
public function start();
public function stop();
}
//编写相机类,让它去实现接口
//1.当一个类实现了 某个接口,则要求该类必须实现这个接口的所有方法
class Camera implements iUsb{
public function start(){
echo 相机开始工作;
}
public function stop(){
echo 相机停止工作...;
}
}
//编写手机类
class Phone implements iUsb{
public function start(){
echo 手机开始工作;
}
public function stop(){
echo 手机停止工作...;
}
}
//如何使用
$camera1=new Camera();
$camera1-start();
$camera1-stop();
echo br/;
//手机对象
$phone1=new Phone();
$phone1-start();
$phone1-stop();
?
接口的使用基本语法
interface 接口名{
//属性
//方法
}
? 接口的方法都不能有方法体
如何去实现接口
class 类名 implements 接口名1,接口2.{
}
接口它的作用就是 声明一些方法,供其它类来实现.
显示全部