码迷,mamicode.com
首页 > 其他好文 > 详细

OOP.3

时间:2016-08-07 06:16:24      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

抽象方法和抽象类

在OOP中,一个类有多个子类,而且每一个类至少含有一个公共的方法作为外部代码访问的接口,而抽象方法是为了方便继承引入的。

抽象方法:在类里面定义设有方法体的方法就是抽象方法,在类的声明时加“abstract”  eg. abstract function fun();

抽象类:只要类里面有一个抽象的方法,这个了类就是抽象方法,也用“abstract”修饰,在抽象类里面可以有不是抽象的方法和成员修饰。

 

* 抽象类不能实例化

 

声明抽象类的作用:把抽象方法作为子类重载的模板使用,定义抽象类就相当于定义了一种规范。这种规范要子类准守,子类继承抽象后,把抽象类里面的抽象方法按子类的需求实现。*子类必须把父类的抽象方法全部实现,否则子类还是抽象类

存在抽象方法,那么子类还是抽象类,还是不能实例化,为什么非要从抽象类中继承? 因为要实现一些功能就必须从抽象类中继承,否则实现不了,如果继承了,就必须实现其中的抽象方法。

 

abstarct class DEMO{

   var $test;

   function fun(){...};

   abstract functiom fun1();

}

$demo =new DEMO;  //错误,因为抽象类不能实例化

class test extends demo{

    function fun1(){...};

}

$test=new test(); //正确,子类中实现了抽象方法。可以实例化

 

接口:因为每个类都只有一个父类,为了解决这个问题。PHP引入了接口,如果一个抽象类里面的所以方法都是抽象方法,那么我们就换一种声明方法使用“接口”,接口里面的所以方法都是抽象方法,在接口里面不能声明变量,而且所以成员都是“public”权限。

接口的声明:interface 接口名{...}

 

<?php

 interface one{

const constant=‘constant value‘;

public functiom fun1();

public functiom fum2();

 

}

?>

<?php

interface two extends one{   //用EXTENNDS让一个接口去继承另外一个接口

  ...   

}

?>

 

<?php

claas three implements one{       //定义的一个接口的子类去实现接口中的全部抽象方法使用关键字 “implements”

  function fun1(){...};

   function fun2(){...};

}

?>

OOP.3

标签:

原文地址:http://www.cnblogs.com/huzhenkai/p/5727486.html

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