php抽象类继承抽象类,PHP抽象类和抽象方法以及接口
PHP中的抽象类和抽象方法自己用的不多,但是经常会在项目中看到别人使用,同样,今天在看别人的代码的时候,发现使用了抽象类,就总结下:
抽象类:
1、如果一个类中有一个方法是抽象方法,则这个类就是抽象类;
2、抽象类必须加上abstract关键字修饰;
抽象方法:
定义:一个方法如果没有方法体,则这个方法就是抽象方法
1、一个方法没有方法体,直接用分号结束的方法;
2、如果是抽象方法,必须使用abstract抽象关键字形容
注意:1、只要有abstract修饰的类就是抽象类
2、除了在抽象类中可以有抽象方法之外,和正常的类完全一样
3、抽象类不能实例化对象
4、如果有抽象类,就必须有这个类的子类,并且在子类中写方法覆盖抽象类中的抽象方法(加上方法体)
5、子类必须全部重写父类中的抽象方法,这个子类才能被实例化,如果只是实现部分,那么这个子类还是抽象类
抽象类的作用:就是严格要求子类的结构,所以抽象类其实就是一个规范。
抽象方法的作用:就是规定子类必须有这个方法,且将功能交给子类来处理,只写出来方法的结构,而没有实现(无方法体),具体的功能实现交给具体的子类根据自己的需求实现
/**
* 抽象类
*
*/
abstract class Person
{
public $name;
public $age;
//抽象方法
abstract function say();
abstract function eat();
function run()
{
echo "hello world";
}
function sleep()
{
echo "test";
}
}
/**
* 抽象类的子类
*
*/
class StudentCn extends Person
{
function say()
{
echo "我说中文
";
}
function eat()
{
echo "我用筷子吃饭";
}
}
接口:接口是一种特殊的抽象类
1、抽象类和接口都有抽象方法
2、抽象类和接口都不能实例化
3、抽象类和接口的使用意义(即作用)相同
比较:
a、接口中的方法,必须全部是抽象方法,所以接口中的抽象方法不需要使用abstract关键字,直接用分号结束即可
b、接口中的成员属性,必须是常量(不能有变量)
c、所有的方法必须全部是public
d、声明接口不适用class,而是使用interface
Tips:
1、可以使用extends让一个接口继承另一个接口,即常用的继承(扩展新抽象方法),无覆盖的关系
2、可以使用一个类来实现接口中全部方法,也可以使用一个抽象类,来实现接口中的部分方法
3、不要使用extends这个关键字,使用implements实现implements相当于extends
4、一个类可以在继承另一个类的同时,使用implements实现一个接口,也可以实现多个接口(一定要先继承,再实现接口)
/**
* 接口
*/
interface Demo
{
const Name = "妹子";
const Age = 10;
function test();
function test2();
}
echo Demo::Name;//访问常量
/**
* 接口继承接口,用于扩展接口
*/
interface Test extends Demo
{
function test4();
}
/**
* 普通类
*/
class world
{
function test5()
{
}
}
/**
* 继承+接口
*/
class Hello extends World implements Test
{
function test()
{
}
function test2()
{
}
function test3()
{
}
function test4()
{
}
function test5()
{
}
}
php抽象类继承抽象类,PHP抽象类和抽象方法以及接口相关推荐
- 抽象类继承多个抽象类_多重继承?抽象类?C++的内存布局并不复杂
多重继承 先来看看多重继承吧 class 先来看构造函数 ...... 001917DD pop ecx 001917FC mov ecx,dword ptr [this] ;取出this指针 001 ...
- 【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )
文章目录 I . 抽象类总结 II . 抽象类声明 III . 抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) IV . 抽象类继承 V . 抽象方法的覆盖 VI . 抽象方法的实现 ...
- 不含抽象方法的抽象类 java_Java:抽象类继承非抽象类,且不包含抽象方法有何负面作用吗?...
我定义了一个抽象类 继承非抽象类, 且不包含抽象方法 但是运行 OK 这样做有啥负面作用? public abstract class ExceptionBase extends Exception ...
- JavaSE面向对象:继承、多态、Super、Object类、重写、static、final、静态成员、懒汉式、饿汉式、单例设计模式、初始化块、抽象类、抽象方法、接口
感谢尚硅谷免费提供的视频 继承 ** 理解 ** 生活中的继承:子女继承了父母的财产或相貌或才华 java中的继承:一个类不用自己定义属性或方法,就已经具备了另一个类的属性和方法 把这种现象称为jav ...
- java基础之继承补充和抽象类
继承的补充和抽象类 1.子类和父类中出现了同名的变量该如何访问?(super) 使用super关键字可以直接指定父类空间 格式: super.成员变量 访问成员变量的时候特点: 如果所指定的空间找不到 ...
- JAVA 继承基本类、抽象类、接口
Java是一个面向对象的语言,java面向对象一般有三大特征:封装.继承.多态. 封装:就是把一些属性和方法封装到一个类里. 继承:就如子类继承父类的一些属性和方法. 多态:就如一个父类有多个不同特色 ...
- php 抽象类 继承,PHP 抽象类继承抽象类时的注意点
原标题:PHP 抽象类继承抽象类时的注意点 抽象类继承另外一个抽象类时,抽象类中,不能重写抽象父类的抽象方法.这样的用法,可以理解为对抽象类的扩展. 下面的例子,演示了一个抽象类继承自另外一个抽象类时 ...
- java 抽象类继承抽象类_Java之继承、抽象类、接口篇
一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...
- 接口抽象类继承父类和子类
1.接口是什么? 接口可以理解为一个特殊的抽象类,是由全局常量和公共抽象方法组成的. 所以,如果,一个抽象类的方法都是抽象的,那么就可以通过接口的形式来表示. class 用于定义类 interfac ...
最新文章
- 【译】用图表展示未知----通向报表服务的阶梯系列(五)
- 备忘之--apache下为站点添加错误页面
- 10.热空气扭曲效果
- 邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding
- metrics_FlexyPool如何支持Dropwizard Metrics包重命名
- goland中grpc的安装
- Java中四种访问权限总结
- 【论文笔记】命名实体识别论文
- 深入分析java线程池的理解
- DSP技术:基于TMS320F28027芯片的温度测量系统
- 免杀技术有一套(免杀方法大集结)
- C语言strcmp函数用法
- Oracle 临时表详解(temporary table)
- [转载]this 指向详细解析(箭头函数)
- php正则校验特殊字符,PHP正则表达式中的特殊字符
- oppor11st升Android p,OPPO R11st刷机教程_OPPO R11st卡刷升级更新官方系统包
- 文本长度过长时隐藏并显示省略号“...”,以及鼠标停留时悬浮显示全部文本(兼容IE)
- 使用JQuery快速高效制作网页交互特效第九章所有上机
- 赛门铁克拆分后蜕变:未来不只是“防病毒”
- YX一周面试题911-918
热门文章
- mac80211概览
- android 权限
- 在Emacs中使用git
- Linux查看文件第几行到第几行命令
- python print rdd_spark: RDD与DataFrame之间的相互转换方法
- zookeeper管理mysql_Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
- 时间区间页面设计两个框html,elementUI 2个输入框 时间区间月份选择
- git学习(五)分支操作和解决冲突
- 人体轮廓_速写人体轮廓的处理有哪些技法?
- eclipse安装OpenExplorer插件--快速打开文件目录