PHP父类调用子类方法的代码例子

今天突然发现需要在父类中调用子类的方法,之前一直都没这么用过,通过实践发现也可以。例子如:

代码如下:

<?php
/**
 * 父类调用子类方法 基类
 * @author LNMP100
 *
 */
class BaseApp
{
    /**
     * 调用子类方法
     * @version  创建时间:2013-07-10
     */
    function _run_action()
    {
            $action = "index";
            $this->$action();
    }
}

class DefaultApp extends BaseApp
{

/**
     * 此方法将在父类中调用
     */
    function index()
    {
            echo "DefaultApp->index() invoked";
    }

function  Go(){
        //调用父类
        parent::_run_action();
    }
}

$default=new DefaultApp();
$default->Go();
//将显示DefaultApp->index() invoked

?>

不过感觉上这不叫父类调子类,是子类调自己的方法而已,因为实例化是子类,如果你实例化父类还能调子类的方法就有问题了。

(0)

相关推荐

  • PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述

    复制代码 代码如下: <?php /* 边学边做的,为方便自己翻阅而发布,更为得到高人指点而发布,欢迎高手指点...... [提示]本例通过测试无误 [情景设计] 模拟计算机主板IDE接口,比如:主板可以存取的储存器常常有光驱.硬盘.闪存等等, 为了方便,有必要对这些不同的储存器设定同一的接口. 本例还假设一种前所未有的.存取方式与众不同的外星储存器也要加到主板上进行存取, 于是需要采用耦合的设计模式. [本例主要讲述] 1.通过接口.抽象类.一般类继承三种方式达到所谓的"接口"

  • PHP取得一个类的属性和方法的实现代码

    复制代码 代码如下: <?php class myclass { var $var1; var $var2 = 'xyz'; var $var3 = 100; private $var4; function myclass() { $this->val1 = "foo"; $this->val2 = "bar"; return true; } function test1() { return true; } } //get_class_metho

  • php递归方法实现无限分类实例代码

    数组: 复制代码 代码如下: $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' => 11, 'pid' => 0, 'name' => 'www.jb51.net 一级12' ), array('id' => 2, 'pid' => 1, 'name' => '二级21' ), array('id' => 10, 'pid' => 11,

  • php使用get_class_methods()函数获取分类的方法

    本文实例讲述了php使用get_class_methods()函数获取分类的方法.分享给大家供大家参考,具体如下: <?php /* * Created on 2016-7-20 */ class Window //首先定义一个类 { var $state; //窗户的状态 function close_window() //关窗户方法 { $this->state="close"; //窗户的状态为关 } function open_window() //开窗户方法 {

  • PHP 面向对象 final类与final方法

    final---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继承.比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型. 复制代码 代码如下: <? //声明一个final类Math final class Math{ public static $pi = 3.14; public

  • PHP __autoload函数(自动载入类文件)的使用方法

    这也是OO设计的基本思想之一.在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可.下面是一个实际的例子: 复制代码 代码如下: class ClassA{ public function __construct(){ echo "ClassA load success!"; } } //定义一个类ClassA,文件名为ClassA.php class ClassA{ public function __construct(){ echo &

  • php判断变量类型常用方法

    现在让我们了解下具体的使用方法 gettype() gettype 会根据 参数类型返回下列值 "boolean"(从 PHP 4 起) "integer" "double"(如果是 float 则返回"double",而不是"float") "string" "array" "object" "resource"(从 PHP

  • 解析PHP将对象转换成数组的方法(兼容多维数组类型)

    复制代码 代码如下: /**  * @author 我们  * @date 2013-6-21  * @todo 将对象转换成数组  * @param unknown_type $obj  * @return unknown  */ function object_to_array($obj){  $_arr = is_object($obj) ? get_object_vars($obj) :$obj;  foreach ($_arr as $key=>$val){   $val = (is_

  • PHP父类调用子类方法的代码例子

    今天突然发现需要在父类中调用子类的方法,之前一直都没这么用过,通过实践发现也可以.例子如: 复制代码 代码如下: <?php/** * 父类调用子类方法 基类 * @author LNMP100 * */class BaseApp{    /**     * 调用子类方法     * @version  创建时间:2013-07-10     */    function _run_action()    {            $action = "index";      

  • php操作redis中的hash和zset类型数据的方法和代码例子

    前面一篇博客主要是string类型,list类型和set类型,下面hash类型和zset类型 1,hset 描述:将哈希表key中的域field的值设为value.如果key不存在,一个新的哈希表被创建并进行HSET操作.如果域field已经存在于哈希表中,旧值将被覆盖. 参数:key field value 返回值:如果field是哈希表中的一个新建域,并且值设置成功,返回1.如果哈希表中域field已经存在且旧值已被新值覆盖,返回0. 2,hsetnx 描述:将哈希表key中的域field的

  • ReactNative-JS 调用原生方法实例代码

    第一步首先创建ReactNative 模块类继承ReactContextBaseJavaModule package com.mixture; import android.content.Context; import android.widget.Toast; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule

  • Java中父类怎么调用子类的方法

    父类能调用子类的方法吗? 答:能. 怎么做? 把子类传递到父类的有参构造中,然后调用. 使用反射的方式调用,你使用了反射还有谁不能调用的?! 父类调用子类的静态方法. 案例展示: package com.ywq; public class Test2{ public static void main(String[] args) { Son son = new Son(); Father father=new Father(son); father.fun1(); father.fun4();

  • ThinkPHP控制器间实现相互调用的方法

    本文实例讲述了ThinkPHP控制器间实现相互调用的方法.分享给大家供大家参考.具体实现方法如下: ThinkPHP同一个项目里,两个控制器的方法如何相互调用呢?ThinkPHP提供了一个A(),通过它可以使控制器之间的方法相互调用,使得代码可以重复利用. 官方似乎对A()方法没有相关使用文档,现在通过一个例子来说一下如使用A()方法. 有两个控制器,ColumnsAction和NewsAction.ncatlist()是ColumnsAction的分类列表方法,现在我要在控制器NewsActi

  • C#中子类调用父类的实现方法

    本文实例讲述了C#中实现子类调用父类的方法,分享给大家供大家参考之用.具体方法如下: 一.通过子类无参构造函数创建子类实例 创建父类Person和子类Student. public class Person { public Person() { Console.WriteLine("我是人"); } } public class Student : Person { public Student() { Console.WriteLine("我是学生"); } }

  • python中子类继承父类的__init__方法实例

    前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 . 注意:这个名称的开始和结尾都是双下划线. 父类A class A(object): def __init__(self, name): self.name=name print "name:", self.name def getName(self): return 'A ' + sel

  • C#访问及调用类中私有成员与方法示例代码

    开发背景 开发工具:VS2017 语言:C# DotNet版本:.Net FrameWork 4.0及以上 系统:Win10 X64 一.首先建立一个控制台APP,并命名为ConsoleApp,如下图所示: 二.新建一个Person类 并在类里面添加两个成员,一个是name字段,另外一个是Display方法,该方法带有一个"前缀"输入参数prefix,用于加在name字段前面,如下代码所示: class Person { string name; void Display(string

  • Java调用微信支付功能的方法示例代码

    Java 使用微信支付 前言百度搜了一下微信支付,都描述的不太好,于是乎打算自己写一个案例,希望以后拿来直接改造使用. 因为涉及二维码的前端显示,所以有前端的内容 一. 准备工作 所需微信公众号信息配置 APPID:绑定支付的APPID(必须配置) MCHID:商户号(必须配置) KEY:商户支付密钥,参考开户邮件设置(必须配置) APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置) 我这个案例用的是尚硅谷一位老师提供的,这里不方便提供出来,需要大家自己找,或者公司提供 二

  • Javascript中3种实现继承的方法和代码实例

    继承是我们在实现面向对象编程的时候很重要的一个手段.虽然我们讲不能过度继承,多利用组合代替继承,但是继承总是免不了的.这里要讨论的就是Javascript中的继承机制. Javascript中实际上是没有继承的概念的,但是我们可以通过一些手段来模仿实现它.这种继承实际上把一个对象复制到另外一个对象内部.你需要注意的是所有的本地类和宿主类是不能作为基类被继承的,主要是为了安全方面的考虑. Javascript中的继承大约有三类:1.对象冒充:2.原型继承:3.二者的混合. 一.对象冒充 其实对象冒

随机推荐