1、什么是抽象方法?

   我们在类里面定义的没有方法提的方法就是抽象方法。所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方法还要加一个关键字"abstract"来修饰。
例如: 
abstract function fun1(); 
abstract function fun2(); 
 
      2、什么是抽象类?
      只要一个类里面有一个方法是抽象方法,那么这个类就定义为抽象类,抽象类也要使用“abstract”关键字来修饰;在抽象类里面可以有不是抽象的方法和成员属性,但只要有一个方法是抽象的方法,这个类就必须声明为抽象类,使用“abstract”修饰。
例如:
abstract class demo{
var $test;
abstract function fun1();
abstract function fun2();
}
 
         3、抽象类有什么作用?
        上例子中定义了一个抽象类“demo”使用了“abstract”来修饰,在这个类里面定义了一个成员属性"$test",和两个抽象方法“fun1”和“fun2”还有一个非抽象的方法fun3();那么抽象类我们怎么使用呢?最重要的一点就是抽象类不能产生实例对象,所以也不能直接使 用,前面我们多次提到过类不能直接使用,我们使用的是通过类实例化出来的对象,那么抽 象类不能产生实例对象我们声明抽象类有什么用呢?我们是将抽象方法是做为子类重载的模 板使用的,定义抽象类就相当于定义了一种规范,这种规范要求子类去遵守,子类继函抽象 类之后,把抽象类里面的抽象方法按照子类的需要实现。子类必须把父类中的抽象方法全部 都实现,否则子类中还存在抽象方法,那么子类还是抽象类,还是不能实例化对;为什么我 们非要从抽象类中继承呢?因为有的时候我们要实现一些功能就必须从抽象类中继承,否则 这些功能你就实现不了,如果继承了抽象类,就要实现类其中的抽象方法;
例如:
abstract class mode{
  var $test;
  abstract function fun1();
  abstract function fun2();
  function fun2(){
    ....
  }
}
 
$mode = new mode(); //抽象类只能为产生实例对象,所以这样做是错的,实例化对象交给子类
class test extends mode{
   function fun1(){
    ....
   }
   
   function fun2(){
   ....
   }
}
$test = new test(); //子类可以实例化对象,因为实现了所有父类的抽象化方法

php中的抽象方法和抽象类,简单明了,一点通的更多相关文章

  1. java中的抽象方法与抽象类

    在继承时,会遇到一个问题.如果很多子类都要继承父类的一个方法,但是实现的逻辑都不一样. 这时候父类只提供了方法名,但是没有具体的方法体. 例如,男孩类和女孩类都继承人类这一个父类.人类有爱好这个方法, ...

  2. php中的抽象方法和抽象类

    1.什么是抽象方法?    我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时方 ...

  3. Delphi代码中嵌入ASM代码(简单明了)

    前言 Delphi作为一个快速高效的开发平台,使用的人越来越多,但熟悉在Delphi代码中嵌入ASM代码的程序员我想不多,因为这方面的资料太少了,另一方面,它还需要有基本的汇编语言知识,关於汇编语言的 ...

  4. 抽象类中的抽象方法也是默认public的么(类似于interface)?

    测试下: public abstract class AbstractTest { abstract int printline(); } 在另一个package 设置 public class Ab ...

  5. Java抽象类中的抽象方法的参数对应的子类的方法的参数必须一致吗?

    同学你这个涉及了两个概念. 一个是抽象方法,一个是方法重载. 先说下概念: 抽象方法就是abstract描述的方法,它本身不含实现,必须由子类实现. 方法重载则是同一个方法名,但是参数类型或者参数个数 ...

  6. rocketmq中的NettyRemotingClient类的简单分析

    rocketmq中的NettyRemotingClient类的简单分析 Bootstrap handler = this.bootstrap.group(this.eventLoopGroupWork ...

  7. PHP抽象方法、抽象类以及接口

     1.什么是抽象方法?    我们在类里面定义的没有方法提的方法就是抽象方法.所谓的没有方法体指的是,在声明的时候没有大括号以及其中的内容,而是直接在声明时在方法名后加上分号结束,另外在声明抽象方法时 ...

  8. java:面向对象(多态,final,抽象方法,(简单工厂模式即静态方法模式),接口)

    * 生活中的多态:同一种物质,因环境不同而表现不同的形态. * 程序中多态:同一个"接口",因不同的实现而执行不同的操作. * 多态和方法的重写经常结合使用,子类重写父类的方法,将 ...

  9. 【PHP面向对象(OOP)编程入门教程】19.抽象方法和抽象类(abstract)

    在OOP语言中,一个类可以有一个或多个子类,而每个类都有至少一个公有方法做为外部代码访问其的接口.而抽象方法就是为了方便继承而引入的,我们先来看一下抽象类和抽象方法的定义再说明它的用途. 什么是抽象方 ...

随机推荐

  1. Linux多线程实践(10) --使用 C++11 编写 Linux 多线程程序

    在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从 ...

  2. Python学习 - 输入和输出

    #输出 print('hello, python') print('The quick brown fox', 'jumps over', 'the lazy dog') #多个字符串,用逗号隔开,就 ...

  3. 基于Qt的手机程序----口袋理财

    主页面 记账模块 制定目标 备忘录

  4. Flash Media Live Encoder 使用帮助

    翻译了一下Flash Media Live Encoder的帮助内容. Flash Media Live Encoder包含两个工具: Flash Media Live Encoder GUI(图 ...

  5. VS2008中开发手持终端程序(PDA软件)总结

    VS2008中开发手持终端程序(PDA手机软件)的项目总结 1程序结构 程序中包括四个部分: 1.系统配置 这个部分用来配置系统中的相关参数,参数包括数据库信息和串口的配置信息.这部分的主要技术是XM ...

  6. 说说struts2中拦截器的请求流程一(模拟大致流程)

    本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...

  7. AngularJS进阶(十三)JS利用正则表达式校验手机号

    JS利用正则表达式校验手机号 注:请点击此处进行充电! 绪 由于项目需求,需要在前端实现手机号码的校验.当然了,对于基本的格式校验应该放在客户端进行,而不需要再将待校验的手机号发送至服务端,在服务端完 ...

  8. mysql随笔

    MySQL查询优化器--非SPJ的优化 MySQL查询优化器--非SPJ优化(一)--GROUPBY优化 http://blog.163.com/li_hx/blog/static/183991413 ...

  9. HBase Muti-Master

    为了保证HBase集群的高可靠性,HBase支持多Backup Master 设置.当Active Master挂掉后,Backup Master可以自动接管整个HBase的集群. 该配置极其简单: ...

  10. linux终端用户登录流程

    终端可以通过连线,猫或网络(ssh,telnet,rlogin)和unix相连. 对于每个物理终端端口,都有一个getty监视,getty是由init程序启动的. getty收到用户名->调用l ...