PHP中的特殊类,接口类和抽象类(都不能直接实例化)

接口类不用实例化,需要一一实现接口定义的所有方法。关键字interface implements

接口interface 是一个规定,给人继承用的东西,有点像抽象类在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法,
实际上接口类说白了,就是一个类的模板,一个类的规定,

举个例子interface Shop  {  public function buy($gid);  public function sell($gid);  public function view($gid);  }    我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,如果子类没有实现这些话,就无法运行。实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,如:

class BaseShop implements Shop  {  public function buy($gid)  {  echo(‘你购买了ID为 :‘.$gid.‘的商品‘);  }  public function sell($gid)  {  echo(‘你卖了ID为 :‘.$gid.‘的商品‘);  }  public function view($gid)  {  echo(‘你查看了ID为 :‘.$gid.‘的商品‘);  }  }————————————————————————————————————————————————————————————————————————————————————————————————————————

抽象类&抽象方法  (只能被继承)(关键字 abstract)(继承关键字extends)

具有抽象方法的类为抽象类,

抽象方法即为没有内容的空方法,要求子类进行完善内容,

抽象类不能实例化,只能继承,

通过extends来实现,抽象类中也可以定义普通方法

父类方法执行方式不确定,但子类还都有这个方法

例1:如交通工具类:定义抽象方法控制交通工具运行方式,这样每个交通工具如飞机,汽车都要重写父类方法。如果在父类工具类定义该方法(比如在地上走)没有任何意义,因为每个交通工具都要重写(飞机要重写方法,船要重写方法),所以针对你类方法的不确定性,我们需要抽象方法,实现多态。

例2:定义动物类,每个动物都有叫声方法,但是表面不同,所以要定义为抽象类,让每种动物类去实现功能。

当父类为抽象类时,子类必须重写父类的抽象方法

抽象类里不一定非要写抽象方法,但有抽象方法的类必须定义为抽象类

抽象类必须继承使用

抽象方法不能有主体即{}

<?php

abstract class AbstractClass

{

// 强制要求子类定义这些方法

abstract protected function getValue();

abstract protected function prefixValue($prefix);

// 普通方法(非抽象方法)

public function printOut() {

print $this->getValue();

}

}

________________________________________________________________________________________
时间: 2025-01-04 07:37:27

PHP中的特殊类,接口类和抽象类(都不能直接实例化)的相关文章

023_接口类,抽象类,多态,鸭子类型,封装

1,接口类 1 class Wechat(): 2 def pay(self,money): 3 print('已经用微信支付了%s元'%money) 4 class Alipay(): 5 def pay(self,money): 6 print('已经用支付宝支付了%s元' % money) 7 wechat = Wechat() 8 ali = Alipay() 9 # wechat.pay(100) 10 # ali.pay(200) 11 #将上面两句用下面的替换, 12 def pa

初识面向对象-接口类、抽象类、封装

接口类 # java : 面向对象编程# 设计模式 —— 接口# 接口类 : python原生不支持# 抽象类 : python原生支持的from abc import abstractmethod,ABCMetaclass Payment(metaclass=ABCMeta): # 元类 默认的元类 type @abstractmethod def pay(self,money):pass # 没有实现这个方法# 规范 :接口类或者抽象类都可以# 接口类 支持多继承,接口类中的所有的方法都必须

python 接口类、抽象类、多态

参考https://www.cnblogs.com/Fantac/p/11481114.html 接口类和抽象类总结 在python中没有接口类,但有抽象类;abc模块中的metaclass = ABCMeta,@abstractmethod它的本质是做代码的规范用的,希望子类中能实现父类名字完全一样的方法 接口类和抽象类: 从java的角度上看是有区别的,java本来就支持单继承所以就有了抽象类;java没有多继承,所以为了接口隔离原则,设计了接口这个概念,支持多继承了 而python它既支持

Python中的接口类与抽象类

接口类 面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展:2)接口继承.所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能~ 接口继承可以使得外部调用者无需关心具体的实现细节,可用相同的方式处理继承了特定接口的所有对象,这里的前提是接口类需要做出一个很好的抽象~ class Operate_database(): # 接口类 def query(self, sql): ra

对php的接口类与抽象类的理解

php 接口类:interface 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容. 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的. 接口中定义的所有方法都必须是公有,这是接口的特性. 要实现一个接口,使用 implements 操作符.类中必须实现接口中定义的所有方法,否则会报一个致命错误.类可以实现多个接口,用逗号来分隔多个接口的名称. Note: 实现多个接口时,接口中的方法不能有重名

day_21(接口类,抽象类,封装)

class Payment: # 抽象类,或者接口类:制定一个规范. def pay(self):pass class QQ(Payment): def pay(self,money): print('您用qq支付了%s元' % money) class Ali(Payment): def pay(self,money): print('您用支付宝支付了%s元' % money) class Wechat(Payment): def pay(self,money): print('您用微信支付了

面向对象:接口类、抽象类

# python 没有接口这个概念# 接口类,抽象类: 制定一个规范. 接口类,抽象类:python中就是一样的 1,归一化设计. 2,制定一个规范,凡是继承我类的类,必须有我规定的方法. # 第一版 class Alipay: def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' %self.money) class Jdpay: def __init__(self, money): sel

php 接口类与抽象类的实际作用

1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : interface Shop { public function buy($gid); public function sell($gid); public function view($gid); } 我声明一

python编程设计模式之接口类和抽象类

接口类 """ 接口类 是一种编程设计模式,在python原本没有接口类 借用Java思想创建的一种规范设计模式 支持多继承,进行多方面规范 """ 例子: from abc import abstractmethod, ABCMeta class Clergy(metaclass=ABCMeta): # 规范子类都要有cure方法 @abstractmethod # 装饰要规范的方法 def cure(self, HP): # 规范方法必须要p