php类接口的应用关键词是接口、输入。 接口是一种特殊的抽象类,成员属性均为抽象或常量,implements主要使用类名、类所具有的方法和传递的参数作为约束和规范。 类似于abstract抽象类。
应用类内接口
1 .关键词:界面
2 .关键词: implements
1 .界面介绍和制作
接口:成员的所有属性都是抽象或常量的特殊抽象类。
规则:
1 .类中都是抽象方法。
2 .抽象方法钱不用加abstract。
3 .接口抽象方法的属性是公共的。
4 .成员属性必须是常数。
格式代码是以下:
接口demo {
const NAME='常量对象属性';
函数myfun1(; //抽象的方法
function myfun2(; //用抽象的方法,不用具体写逻辑
}
一.接口的定义和调用
接口公司
{
const film='加勒比海盗';
公共功能显示(;
}
class Order implements Cinema
{
公共功能显示(
{
echo '电影界面已打开
';
}
}
$face=new Order (;
echo $face-show (;
echo Cinema:film;
说明:上面的例子请注意。 接口的方法名称为show,继承接口的类需要名为show的方法。 否则会报告错误。 也就是说接口的方法是假的,真正起作用的是继承的类中的方法,这里接口和php的抽象类不是有点相似吗?
二是参数约束严格
接口公司
{
publicfunctionshow(order$show,$num );
}
//显示正常
class Order implements Cinema
{
public $number='0011列';
publicfunctionshow(order$show,$num ) ) ) ) ) ) ) ) ) )。
{
echo $show-number.$num;
}
}
$face=new Order (;
$face-show(neworder,$num='3人'); //输出0011列3人
说明:在上面的示例中,在接口类中调用接口的方法时,传递的参数必须与接口中的参数名称一一对应。 否则我会报告错误。
三是接口之间的继承和调用接口传播参数
接口公司
{
公共功能显示(;
}
接口cinema1extends cinema
{
publicfunctionshow1(order1$ object,$num );
}
class Order implements Cinema1
{
公共功能显示(
{
echo '准备完毕
';
}
publicfunctionshow1(order1$ object,$num ) )。
{
//var_dump($object;
echo $object-number.'$num
';
}
}
类订单1
{
public $number='0012列';
功能函数
echo '=================echo '=====;
}
}
$show=new Order1;
$show-fun (;
$test=new Order (;
$test-show (;
$test-show1($show,$num='6人');
//输出===============准备完毕0012列6人
说明:在上面的示例中,您可以看到接口Cinemal1继承了接口Cinemal,而类Order继承了接口Cinemal1。 不知道你是否发现了,class系Order包括两种方法。 一个是show,一个是show1,一个也不能少。 如果少一个
,报fatal错误。show1(Order1 $object,$num)中的Order1必须根继承类的名子要一样class Order1。如果不一样,也会报fatal错误。那如果一个接口被多个类继承,并且类名又不一样,怎么办呢?那就要用self了,下面会提到四,一个接口多个继承
interface demo {
const NAME = "电影名称";
function fun1();
function fun2();
}
interface demo2 {
function fun3();
function fun4();
}
interface demo3 {
const TEST = "这里是测试Test";
function fun5();
}
class MyDemo implements demo, demo2 {
function fun1() {
echo "你好";
}
function fun2() {
echo "----------";
}
function fun3() {
echo "我也好
";
}
function fun4() {
echo "大家都好
";
}
}
class YourDemo extends MyDemo implements demo3 {
function fun5() {
echo "继承类后引用接口";
}
}
$p = new YourDemo;
$p->fun1();
$p->fun2();
$p->fun3();
$p->fun4();
$p->fun5();
以上输出
你好----------我也好
大家都好
继承类后引用接口
上面的例子中我们可以看到接口都使用关键字 interface 来定义,并使用关键字 implements 来实现接口中的方法,再举个例子:
//定义接口
interface User{
function getDiscount();
function getUserType();
}
class VipUser implements User{ //VIP用户 接口实现
private $discount = 0.8; // VIP 用户折扣系数
function getDiscount() {
return $this->discount;
}
function getUserType() {
return "VIP用户";
}
}
class Goods{
var $price = 88;
var $vc;
function run(User $vc){ //定义 User 接口类型参数,这时并不知道是什么用户
$this->vc = $vc;
$discount = $this->vc->getDiscount();
$usertype = $this->vc->getUserType();
echo $usertype."商品价格:".$this->price*$discount;
}
}
$display = new Goods();
$display ->run(new VipUser); //VIP用户商品价格:70.4
这个例子演示了一个 PHP 接口的简单应用。该例子中,User 接口实现用户的折扣,而在 VipUser 类里面实现了具体的折扣系数。最后商品类 Goods 根据 User 接口来实现不同的用户报价.
最后总结下:
抽象类和接口的区别
接口是特殊的抽象类,也可以看做是一个模型的规范。接口与抽象类大致区别如下:
1.一个子类如果 implements 一个接口,就必须实现接口中的所有方法(不管是否需要);如果是继承一个抽象类,只需要实现需要的方法即可。
2.如果一个接口中定义的方法名改变了,那么所有实现此接口的子类需要同步更新方法名;而抽象类中如果方法名改变了,其子类对应的方法名将不受影响,只是变成了一个新的方法而已(相对老的方法实现)。
3.抽象类只能单继承,当一个子类需要实现的功能需要继承自多个父类时,就必须使用接口。
以上所述是小编给大家介绍的php中的implements 使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!