码迷,mamicode.com
首页 > Web开发 > 详细

php面向对象编程_2

时间:2015-10-21 20:38:25      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

1, 抽象类 ,用abstract关键字来修饰一个类,这个类就是抽象类;如果用abstract关键字来修饰一个方法,这个方法就是抽象方法,如果是抽象方法就不能实现(即抽象方法只能声明,不能定义)。

抽象类的样式:

abstract 类名{

成员变量;

abstract 成员方法

}

为什么设计抽象类这个技术?

在实际开发中,我们可能有这样一种类,是其他类的父类,但是它本身并不需要实例化。主要用途是让子类来继承,这样可以达到代码复用。同时利于项目设计者,设计类。比如,项目经理安排手底下多人编写某项目代码,为了统一管理,项目经理可以先写一个项目的抽象类,其他人在抽象类基础上进行编写。

abstract class Animal{
    public $name;
    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();

  

抽象类注意事项:

(1),抽象类不能被实例化。

(2),抽象类不一定包含abstract方法,也就是说抽象类可以没有抽象方法,可以有实现了的方法。。

(3),如果一个类中,只要有抽象方法,则该类必须声明为抽象类。

(4),抽象方法没有函数体,即抽象方法只有声明,没有定义。

(5),如果A类继承了抽象类B,则要求A类实现从B类继承的所有抽象方法。

2, 接口,接口是更加抽象的抽象类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。接口体现了程序设计的多态和高内聚低耦合的设计思想。

(1),接口的实例化

/模拟USB接口
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();

$phone1 = new Phone();
$phone1->start();
$phone1->stop();

  

(2)接口使用的基本语法,接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。

Interface 接口名{

//属性

//方法

}

接口中方法都不能有方法体,只能声明,没法定义。

(3)如何实现接口

Class 类名 implements 接口1,接口2{

}

(4)什么时候使用接口,(4.1)比如架构师订下规范,让别的程序员来实现;比如架构师做一个学生管理系统。定义接口

interface StuManagerInterface{
    public function addStudent($stu);  //$stu为对象
    public function delStudent($id);
    public function updStudengt($stu);
}
给程序员
class StuManage{
    public function tianjiaxuesheng(){
        
    }
}

  (4.2)多个类(类之间无继承关系,是平级的)这些类都要去实现某个功能。

技术分享

(5)接口相关细节知识

(5.1)接口不能实例化;

(5.2)接口中所有方法都不能有主体,只能声明,没有定义;

(5.3)一个类可以实现多个接口,必须用逗号隔开;

class 类名 implements 接口1,接口2{}

(5.4)接口中可以有属性,但必须是常量,并且是public的;

interface iUsb{
    const A = 90;
}
echo "ok".iSub::A;
class B implements iUsb{
    public function aaa(){
        iSub::A
    }
}

  (5.5)接口的方法都是public

(5.6)一个接口不能继承别的类,但是可以继承别的接口,类只能继承一个类,接口可以继承多个接口。一个类实现接口,必须将此接口的方法,以及此接口的所有父接口的方法实现。

技术分享技术分享

 

interface iUsb2{
    public function a();
}
interface iUsb3{
    public function b();
}
interface iUsb extends iUsb2,iUsb3{
    const A = 90;
    public function test();
}
class Class1 implements iUsb{
    public function a(){}
    public function b(){}
    public function test(){}
}

  3,final

4,const

php面向对象编程_2

标签:

原文地址:http://www.cnblogs.com/usa007lhy/p/4898669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!