php抽象类和接口知识点整理总结
发布:smiling 来源: PHP粉丝网 添加日期:2021-12-08 11:38:07 浏览: 评论:0
本文实例总结了php抽象类和接口相关知识点。分享给大家供大家参考,具体如下:
抽象类(一种抽象的类)
一、什么是抽象方法?
定义:一个方法如果没有方法体(一个方法,不使用{},直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法。
- class Person{
- abstract function say(); 没有方法体的 、使用abstract 关键字修饰
- abstract function say(){ 这个不是、有方法体{},
- };
- }
总结 1.声明一个方法不使用{},而直接分号结束。2.如果是抽象方法,必须使用abstract(抽象 关键字来修饰)。
二、什么是抽象类呢?
1.如果一个类中有一个方法是抽象的方法,这个类就是抽象类。
2.如果声明一个抽象类,则这个类必须要使用abstract 关键字来修饰。
- abstract class Person{
- public $name;
- abstract function say();
- abstract function eat();
- }
注意
1.只要使用abstract 来修饰的类,就是抽象类。
2.抽象类是一个特殊的类,特殊在哪里(在抽象类中可以有抽象方法)。
3.除了在抽象类中可以有抽象方法以外,和正常的类完全一样。
注意2
1. 抽象类不能实例化对象(不能创建出对象)。
$p=new Person(); //报错
2. 如果看见抽象类,就必须写这个类的子类,将抽象类中的抽象方法覆盖(加上方法体)。
- class student extend Person()
- {
- function say(){ // 只覆盖了父类的一个
- }
- }
3. 子类必须全部实现(覆盖重写)抽象方法,这个子类才能创建对象,如果实现部分,那么还有抽象方法,他还是抽象类。
- class student extend Person()
- {
- function say(){ // 只覆盖了父类的一个
- }
- }
抽象方法作用
1. 抽象方法就是一个规定,规定子类必须有这个方法的实现,功能交给子类实现。
只写出来结构,没有实现,实现交给具体的子类(按自己功能实现)。
- class student extend Person()
- {
- function say(){
- }
- // 覆盖了父类两个抽象方法
- function eat(){
- }
- }
抽象类作用
就是要求子类的结构,所以抽象类就是一个规范。(只有形)
接口 (接口是一种特殊抽象类,接口也是一种特殊的类 )
接口和抽象类的相同点
1.抽象类和接口都有抽象方法。
2.抽象类和接口不能创建实例对象。
3.抽象类和接口使用意义相同。定义一种规范。
不同点
1.接口中的方法必须全要是抽象方法(不能用不抽象的方法),所以在接口的所有方法中不使用abstract,直接使用 分号结束。
2.接口中的成员属性,必须是常量(不能有变量)。
3.接口所有权限必须是公有的 public
4.声明接口 不使用class 使用 interface ,
- interface Person{
- public $name; //不能声明变量 报错
- const NAME='tom'// 可以声明常量
- function test(); //因为接口中全部是抽象方法 所以 省去 abstract 。
- function test1();
- Protect function test3() 报错 只可以是 public
- }
- $re=new Person; //报错 不可以 创建实例化 对象 。
- echo Person:: NAME; 输出常量。
接口应用的一些细节
1. 可以使用 extends,让一个接口继承另一个接口(接口和接口的关系---只有扩展抽象方法,没有覆盖关系)。
2. 可以使用一个类,来实现接口中的全部方法,也可也使用一个抽象类,来实现接口的部分方法。(类与接口 或者 抽象类 与接口,有覆盖的关系,---重写---实现接口中的抽象方法)
- interface Demo{
- const NAME='tom';
- public function test();
- public function test1();
- }
- interface test extends Demo{ //接口对接口 只有扩展
- function test2();
- }
3.只要在子类中有覆盖的动作,就不要使用extends(继承 扩展)这个关键字,使用implements 实现。
- interface Demo{
- const NAME='tom';
- public function test();
- public function test1();
- }
- interface test extends Demo{ //接口对接口 只有扩展
- function test2();
- }
- class Hello extends test{} // 报错 // 类对接口 有覆盖
- abstract class Hello implements test{
- } //不报错
4.一个类可以在继承另一个类的同时,使用implements 实现接口(可以实现多个接口)(一定要先继承,在实现接口)。
- interface Demo{
- const NAME='tom';
- public function test();
- public function test1();
- }
- interface test extends Demo{ //接口对接口 只有扩展
- function test2();
- }
- Class Word{
- Function test5(){
- }
- }
- class Hello extends Word implements test{
- //可以使用接口
- function test(){
- }
- function test1(){
- }
- //实现接口
- function test2(){
- }
- //function test5(){
- }
- }
5.实现多个接口,只需使用逗号分开即可。
php 中一个类 只要一个父类 。
- interface Demo{
- const NAME='tom';
- function test1();
- }
- interface Test extends Demo{
- function test2();
- }
- class World{
- function test3();
- }
- interface Abc{
- function test6{}
- }
- class Hello extends World implements Test,Abc{
- function test1(){
- };
- function test2(){
- echo 11;
- };
- function test3(){
- };
- function test6(){
- };
- }
- $re=new Hello;
- $re->test2(); //输出 11
Tags: php抽象类 php接口
相关文章
- ·php抽象类与接口的区别详解(2018-10-30)
- ·PHP abstract 抽象类定义与用法示例(2021-09-20)
- ·php数组 类和对象 接口使用方法(2014-09-08)
- ·php 支付宝接口程序源码(2014-09-09)
- ·php飞信接口实例应用代码(2014-09-09)
- ·微信公众平台消息接口校验与消息接口响应例子(2014-09-22)
- ·php天翼开放平台短信发送接口实现(2014-09-22)
- ·PHP接口开发加密技术实例原理与例子(2015-04-13)
- ·PHP接口开发签名验证原理详解(2015-12-10)
- ·php版本的支付宝服务窗API接口的开发(2016-07-15)
- ·PHP接口多继承及tarits实现多继承效果的方法(2021-08-27)
- ·php接口实现拖拽排序功能(2021-09-12)
- ·详细对比php中类继承和接口继承(2021-10-31)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)