coreNLP 服务器
1.定义接口
使用interface关键字声明一个接口,如果某个类要实现这个接口,可以使用implements关键字,语法格式如下:
interface 接口名称 //接口名一般要大写,要养成良好的编程习惯 { 成员函数列表 } class 类名 implements 接口名称 //一个类可以实现多个接口,implements关键字后面可以写多个接口名,并用逗号分开 { 成员函数列表 //类中的成员函数和接口中的成员函数相对应,接口中的成员函数要在类中成员函数实现 }我们来定义一个接口。
例:imple.php
interface Interf{ //创建一个名为Interf的接口 function do_something(); //成员函数 do_something() } class Cls implements Interf{ //Cls的类来实现Interf接口 function do_something(){ //成员函数 do_something() echo 'do...'; //打印do... } } ?>注:接口名不能用interface
类名不能用class
2.实现接口的方法
例:implements.php
interface Fruit{//定义一个接口Fruit function grow(); //创建一个成员函数grow 这里不需要实现,所以函数后面直接以分号结束。由于接口的函数是必须公开的,所以这里不需要在使用public、private和protected修饰。 } class Apple implements Fruit{ //用Apple类来实现Fruit接口 public function __construct(){ //公有 构造函数 echo 'This is apple. '; //打印This is apple.} public function grow(){ //公有 成员函数grow 接口中grow的具体实现 echo 'Apple grown mothed. '; //打印Apple grown mothed.} } class Banana implements Fruit{//用Banana类来实现Fruit接口 public function __construct(){//公有 构造函数 echo 'This is banana. ';//打印This is banana.} public function grow(){//公有 成员函数grow 接口中grow的具体实现 echo 'Banana grown mothed. ';//打印Banana grown mothed.} } class Orange implements Fruit{//用Orange类来实现Fruit接口 public function __construct(){//公有 构造函数 echo 'This is orange. ';//打印This is orange.} public function grow(){//公有 成员函数grow 接口中grow的具体实现 echo 'Orange grown mothed. ';//打印Orange grown mothed.} } //$fruit = new Fruit(); //接口不能实例化,会报错 $apple = new Apple();//实例化 $banana = new Banana();//实例化 $orange = new Orange();//实例化 $apple->grow();//调用apple的grow函数 $banana->grow();//调用banana的grow函数 $orange->grow();//调用orange的grow函数 ?>结果:
接口可以和类一样具有继承能力,接口可以继承多个接口,但是接口不能继承类。
例:
implements2.php interface Gain{//定义一个接口Gain (吸收养分) function suck();//创建一个成员函数suck (吸收方法) } interface Fruit extends Gain{ //Fruit接口使用extends继承Gain接口 function grow();//创建一个成员函数grow } class Apple implements Fruit{//用Apple类来实现Fruit接口 public function __construct(){//公有 构造函数 echo 'This is apple. ';//打印This is apple.} public function grow(){//公有 成员函数grow 接口中grow的具体实现 echo 'Apple grown mothed. ';//打印Apple grown mothed.} public function suck(){//公有 成员函数suck 接口中suck的具体实现 echo 'Apple suck... ';//打印Apple suck...} } class Banana implements Fruit{//用Banana类来实现Fruit接口 public function __construct(){//公有 构造函数 echo 'This is banana. ';//打印This is banana.} public function grow(){//公有 成员函数grow 接口中grow的具体实现 echo 'Banana grown mothed. ';//打印Banana grown mothed.} public function suck(){//公有 成员函数suck 接口中suck的具体实现 echo 'Banana suck... ';//打印Banana suck...} } class Orange implements Fruit{//用Banana类来实现Fruit接口 public function __construct(){//公有 构造函数 echo 'This is orange. ';//打印This is orange.} public function grow(){//公有 成员函数grow 接口中grow的具体实现 echo 'Orange grown mothed. ';//打印Orange grown mothed.} public function suck(){//公有 成员函数suck 接口中suck的具体实现 echo 'Orange suck... ';//打印Orange suck...} } //$fruit = new Fruit();//接口不能实例化,会报错 $apple = new Apple();//实例化 $banana = new Banana();//实例化 $orange = new Orange();//实例化 $apple->grow();//调用apple的grow函数 $banana->grow();//调用banana的grow函数 $orange->grow();//调用orange的grow函数 $apple->suck();//调用apple的suck函数 $banana->suck();//调用banana的suck函数 $orange->suck();//调用orange的suck函数 ?>结果: