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下intval()和(int)转换使用与区别
Jul 18 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
PHP SplObjectStorage使用实例
May 12 PHP
php上传大文件失败的原因及应对策略
Oct 20 PHP
php简单获取复选框值的方法
May 11 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
php微信公众号开发之校园图书馆
Oct 20 PHP
TP5框架实现签到功能的方法分析
Apr 05 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
phpExcel中文帮助手册之常用功能指南
2014/08/18 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
优化javascript的执行速度
2010/01/23 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
JavaScript简单计算人的年龄示例
2017/04/15 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
CSS3中Transform动画属性用法详解
2016/07/04 HTML / CSS
专科应届生求职信
2013/11/24 职场文书
销售类求职信
2014/06/13 职场文书
设计师求职信
2014/07/01 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
人民调解协议书
2016/03/21 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫