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数组最大值,最小值的代码
Oct 31 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
基于empty函数的判断详解
Jun 17 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 PHP
PHP输出九九乘法表代码实例
Mar 27 PHP
PHP版微信公众平台红包API
Apr 02 PHP
php获取远程文件的内容和大小
Nov 03 PHP
PHP微信红包API接口
Dec 05 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
PHP获取url的函数代码
2011/08/02 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
2015/03/16 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
详谈 Jquery Ajax异步处理Json数据.
2011/09/09 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
2018/07/22 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
详解Vue Cli浏览器兼容性实践
2020/06/08 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
Python实现高效求解素数代码实例
2015/06/30 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
2017/09/05 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
python使用thrift教程的方法示例
2019/03/21 Python
Django保护敏感信息的方法示例
2019/05/09 Python
python 穷举指定长度的密码例子
2020/04/02 Python
python实现处理mysql结果输出方式
2020/04/09 Python
在keras里实现自定义上采样层
2020/06/28 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
浅析移动设备HTML5页面布局
2015/12/01 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
如何进行Linux分区优化
2013/02/12 面试题
高中生的自我鉴定范文
2014/01/24 职场文书
教师节演讲稿
2014/05/06 职场文书
借名购房协议书范本
2014/10/06 职场文书
生产实习心得体会范文
2016/01/22 职场文书