本文实例总结了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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php抽象类和接口知识点整理总结的更多相关文章

  1. Html5页面二次分享的实现

    这篇文章主要介绍了Html5页面二次分享的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. HTML5跳转小程序wx-open-launch-weapp的示例代码

    这篇文章主要介绍了HTML5跳转小程序wx-open-launch-weapp的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – Objective C接口,委托和协议

    所以我试图围绕Objctive-C接口,代理和协议.所以我有一个问题:委托是否必须在单独的文件中,或者它是否是您班级中定义的方法?协议就像java接口吗?

  4. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  5. ios – watchOS错误:控制器的接口描述中的未知属性

    解决方法创建IBOutlet作为WKInterfacePicker的属性,您将不会收到消息.

  6. 泛型 – MonoTouch和支持变体通用接口

    如果是这样,MonoTouch中针对这种情况的推荐解决方法是什么?解决方法这实际上取决于编译器而不是Mono版本.IOW有些东西可能适用于Mono2.10而不适用于MonoTouch6.x.当前版本的MonoTouch附带了smcs编译器和基于2.1的配置文件.较新的功能,如协方差,需要一个完整的4.0编译器和运行时.未来版本的MonoTouch将提供4.0/4.5运行时和编译器.

  7. ios – 用于 – 在Counterparts中的ViewController.swift(接口)文件是什么

    有人可以这么善良并解释这个文件的目的是什么?

  8. ios6 – 检测UIViewController上的接口旋转,即使未在 – (NSUInteger)supportedInterfaceOrientations中定义

    解决方法尝试使用UIDevice实例来检测设备物理方向的变化.要开始接收通知,您可以使用类似的内容:要取消注册接收设备旋转事件,请使用此选项:这是deviceDidRotate函数的一个例子:

  9. 接口和扩展

    classSimpleClass:ExampleProtocol{String="Averysimpleclass."varanotherProperty:Int=120funcadjust(){simpleDescription+="Now100%adjust."}funcadd(){simpleDescription+="Now50%add."}}vara=SimpleClass()a.adjust()letaDescription=a.simpleDescriptionstructSimpleStr

  10. swift类和接口的使用

    1类的使用2接口的使用

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部