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中数据的批量导入(csv文件)
Oct 09 PHP
谈谈新手如何学习PHP
Dec 14 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
Nov 02 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 PHP
PHP读取Excel类文件
May 15 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
laravel orm 关联条件查询代码
Oct 21 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
基于PHP制作验证码
2016/10/12 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
通过正则格式化url查询字符串实现代码
2012/12/28 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
vue.js中父组件调用子组件的内部方法示例
2017/10/22 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
JavaScript中Dom操作实例详解
2019/07/08 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
Python编程入门的一些基本知识
2015/05/13 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
python Web开发你要理解的WSGI &amp; uwsgi详解
2018/08/01 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
用pip给python安装matplotlib库的详细教程
2021/02/24 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
HTML5 video 上传预览图片视频如何设置、预览视频某秒的海报帧
2018/08/28 HTML / CSS
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
戴尔新西兰官网:Dell New Zealand
2020/01/07 全球购物
普通大学毕业生自荐信
2013/11/04 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
政风行风评议整改方案
2014/09/15 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
党风廉政建设心得体会
2019/05/21 职场文书