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


Posted in PHP onMarch 01, 2012

重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。
覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指的是子类对父类中方法的覆盖。
PHP不支持方法和操作符重载。JAVA不支持操作符的重载(但是“+”实际上是一种操作符重载)。

<?php 
Class Father { 
public function fmeth1() { 
echo "fmeth1()...<br>"; 
} 
//public function fmeth1($str1) { 
// echo "fmeth1() with $str1...<br>"; 
//} 
} 
Class Son extends Father { 
public function fmeth1() { 
echo "fmeth1() in son...<br>"; 
} 
} 
$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)注意
只有参数不同才能构成重载

PHP 相关文章推荐
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
微信API接口大全
Apr 15 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
Jul 13 PHP
PHP类型约束用法示例
Sep 28 PHP
laravel创建类似ThinPHP中functions.php的全局函数
Nov 26 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
PHP+JS实现的实时搜索提示功能
Mar 13 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 PHP
JS中encodeURIComponent函数用php解码的代码
Mar 01 #PHP
PHP设计模式之装饰者模式
Feb 29 #PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 #PHP
mysql总结之explain
Feb 27 #PHP
php&amp;mysql 日期操作小记
Feb 27 #PHP
MySQL时间字段究竟使用INT还是DateTime的说明
Feb 27 #PHP
php explode函数实例代码
Feb 27 #PHP
You might like
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
php数组遍历类与用法示例
2019/05/24 PHP
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
AI人工智能 Python实现人机对话
2017/11/13 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
10条PHP编程习惯
2014/05/26 面试题
影视制作岗位职责
2013/12/04 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
Python 如何安装Selenium
2021/05/06 Python
PHP遍历数组的6种方式总结
2021/11/17 PHP