1、什么是笼统要领?
我们在类内里定义的没有要领体的要领就是笼统要领。所谓的没有要领体指的是,在声明的时刻没有大括号以及个中的内容,而是直接在声明时在要领名后加上分号完毕,另外在声明笼统要领时要领还要加一个关键字"abstract"来润饰。
比方:
abstract function fun1(); abstract function fun2();
2、什么是笼统类?
只需一个类内里有一个要领是笼统要领,那末这个类就定义为笼统类,笼统类也要运用“abstract”关键字来润饰;在笼统类内里能够有不是笼统的要领和成员属性,但只需有一个要领是笼统的要领,这个类就必需声明为笼统类,运用“abstract”润饰。
相干引荐:《PHP教程》
比方:
abstract class Demo { var $test; abstract function fun1(); abstract function fun2(); function fun3(){ ... } }
3、笼统类有什么作用?
上例子中定义了一个笼统类“demo”运用了“abstract”来润饰,在这个类内里定义了一个成员属性"$test",和两个笼统要领“fun1”和“fun2”另有一个非笼统的要领fun3();
那末笼统类我们怎样运用呢?最主要的一点就是笼统类不能发生实例对象,所以也不能直接运用,前面我们屡次提到过类不能直接运用,我们运用的是经由过程类实例化出来的对象。
那末笼统类不能发生实例对象我们声明笼统类有什么用呢?我们是将笼统要领作为子类重载的模板运用的,定义笼统类就相当于定义了一种范例,这类范例请求子类去恪守,子类继函笼统类以后,把笼统类内里的笼统要领根据子类的须要完成。子类必需把父类中的笼统要领全部都完成,不然子类中还存在笼统要领,那末子类照样笼统类,照样不能实例化对象;
为何我们非要从笼统类中继续呢?由于有的时刻我们要完成一些功用就必需从笼统类中继续,不然这些功用你就完成不了,假如继续了笼统类,就要完成类个中的笼统要领;
比方:
<? abstract class Demo { var $test; abstract function fun1(); abstract function fun2(); function fun3() { ... } } $demo=new Demo(); //笼统类不能发生实例对象,所以如许做是错的,实例化对象交给子类 class Test extends Demo { function fun1() { ... } function fun2() { ... } } $test = new Test(); //子类能够实例化对象,由于完成了父类中一切笼统要领 ?>
4、笼统类的特性:
笼统类不能实例化,只能被继续。
笼统类不一定有笼统要领,有笼统要领的类,一定是笼统类。
笼统要领的可见性不能是private。
笼统要领在子类中,须要重写。
5、什么时刻须要用笼统类?
有个要领,要领体不知如何写,子类中还必需有这个要领时,封装成笼统要领,类为笼统类。
掌握子类中必需封装某些要领时,能够用笼统要领。
当须要掌握类只能被继续,不能被实例化时。
6、接口
假如一个类中,一切的要领都是笼统要领,且没有成员属性,则这个类被称为接口(interface)。
interface Common{ abstract function work(); abstract function test($args); }
接口的继续(extends):
接口继续接口 interface 接口称号 extends 父接口称号
注重:类的继续是单继续(只能有一个父类),但接口的继续倒是多继续,类对接口的完成也是多完成。
接口的完成(implements):
类完成接口 class 类名 implements 接口称号1,接口称号2, ...
继续类同时完成接口:
类继续父类同时完成接口 class 类名 extends 父类名 implements 接口称号
7、笼统类和接口的区分
接口是一种特别的笼统类,接口中只包括笼统要领,没有成员属性。类完成(implements)接口时,必需完整完成接口中的一切要领;
类继续(extends)笼统类时,只需对须要用到的笼统要领举行重写。笼统类只能单继续,但接口倒是多继续,类对接口的完成也是多完成。
以上就是php笼统类的作用是什么的细致内容,更多请关注ki4网别的相干文章!