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 相关文章推荐
adodb与adodb_lite之比较
Dec 31 PHP
php session处理的定制
Mar 16 PHP
php下使用iconv需要注意的问题
Nov 20 PHP
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
php生成txt文件标题及内容的方法
Jan 16 PHP
PHP中的traits简单使用实例
May 13 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
php邮件发送的两种方式
Apr 28 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
解读python logging模块的使用方法
2018/04/17 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
python中强大的format函数实例详解
2018/12/05 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Python学习笔记之While循环用法分析
2019/08/14 Python
python logging日志模块原理及操作解析
2019/10/12 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
Python模块相关知识点小结
2020/03/09 Python
django实现后台显示媒体文件
2020/04/07 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
html5写一个BUI折叠菜单插件的实现方法
2019/09/11 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
Keds官方网站:购买帆布运动鞋和经典皮鞋
2016/11/12 全球购物
机械工程师的岗位职责
2013/11/17 职场文书
职业生涯规划书基本格式
2014/01/06 职场文书
职工运动会邀请函
2014/01/19 职场文书
审计班子对照检查材料
2014/08/27 职场文书
施工员岗位职责
2015/02/10 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL