• 技术文章 >后端开发 >php教程

    PHP和JAVA中的重载(overload)和覆盖(override) 介绍_PHP教程

    2016-07-21 15:20:18原创874
    重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。
    覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指的是子类对父类中方法的覆盖。
    PHP不支持方法和操作符重载。JAVA不支持操作符的重载(但是“+”实际上是一种操作符重载)。
    复制代码 代码如下:

    Class Father {
    public function fmeth1() {
    echo "fmeth1()...
    ";
    }
    //public function fmeth1($str1) {
    // echo "fmeth1() with $str1...
    ";
    //}
    }
    Class Son extends Father {
    public function fmeth1() {
    echo "fmeth1() in son...
    ";
    }
    }
    $s=new Son();
    $s->fmeth1();
    ?>

    其中父类中的fmeth1方法是不能重载的。

    java中(overload)重载与(override)覆盖的事例小解

    在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。

    QUESTION NO: 3
    复制代码 代码如下:

    class A {
    protected int method1(int a, int b) { return 0; }
    }

    Which two are valid in a class that extends class A? (Choose two)
    A. public int method1(int a, int b) { return 0; }
    B. private int method1(int a, int b) { return 0; }
    C. private int method1(int a, long b) { return 0; }
    D. public short method1(int a, int b) { return 0; }
    E. static protected int method1(int a, int b) { return 0; }

    310-035中的题目,标准答案是A,C

    A是override,access从protected--->public变宽了,因此是正确的。
    B,D也是override,B从protected--->private变窄了,D的返回类型变了,所以都错误。
    C是overload,access的宽窄和返回类型都无所谓,所以是正确的。
    E是override,但是增加了static,因为static method cannot hide the instance method from super class.因此是错误的。
    所以选AC。
    子类继承父类并且覆盖父类方法的叫override --重写,覆写,覆盖
    子类有多个相同方法名称,但是参数不同,叫overload - 重(zhong)载,过载


    重载是:
    当多个方法具有相同的名字而含有不同的参数时产生
    那么对参数不同的调用,实际调用不同的方法
    也可以理解为实际上有两个方法,名字同,参数不同!


    覆盖(OVERWRITE)注意

    不能降低原方法的"可见度

    返回类型不同都不能构成方法的覆盖

    重载(OVERLOAD)注意
    只有参数不同才能构成重载

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/325084.htmlTechArticle重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。 覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指...

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:PHP JAVA 中的 重载 overload 覆盖 override 介绍 重载 同一个 类中 函数 一样
    上一篇:支持中文字母数字、自定义字体php验证码代码_PHP教程 下一篇:PHP中的正则表达式函数介绍_PHP教程
    大前端线上培训班

    相关文章推荐

    • PHP数据库开发知多少_PHP教程• PHP数组操作之怎样删除数组中的首尾元素?• PHP file_get_contents 函数超时的几种解决方法_php技巧• 推荐一本PHP程序猿都应该拜读的书_PHP• PHP header()函数使用详细(301、404等错误设置)_PHP

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网