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 相关文章推荐
一键删除顽固的空文件夹 软件下载
Jan 26 PHP
PHP常用技巧总结(附函数代码)
Feb 04 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
php广告加载类用法实例
Sep 23 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
PHP实现QQ登录实例代码
Jan 14 PHP
yii2分页之实现跳转到具体某页的实例代码
Jun 02 PHP
php实现的http请求封装示例
Nov 08 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
Redis构建分布式锁
Mar 28 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 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
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
Angular2整合其他插件的方法
2018/01/20 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
python查看FTP是否能连接成功的方法
2015/07/30 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
python列表推导式操作解析
2019/11/26 Python
pytorch制作自己的LMDB数据操作示例
2019/12/18 Python
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
儿园租房协议书范本
2014/12/02 职场文书
投资意向协议书
2015/01/29 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
JavaScript继承的三种方法实例
2021/05/12 Javascript
详解Golang如何优雅的终止一个服务
2022/03/21 Golang
python获取带有返回值的多线程
2022/05/02 Python