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安全配置 如何配置使其更安全
Dec 16 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
PHP中file_exists()判断中文文件名无效的解决方法
Nov 12 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
php 中htmlentities导致中文无法查询问题
Sep 10 PHP
php7 错误处理机制修改实例分析
May 25 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 友好URL的实现(吐血推荐)
2008/10/04 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python实现图片转字符画
2021/02/19 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
学校办公室主任职责
2013/12/27 职场文书
消防应急演练方案
2014/02/12 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014财务部年度工作总结
2014/12/08 职场文书
投标邀请书范本
2015/02/02 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
运输公司工作总结
2015/08/11 职场文书
python字典的元素访问实例详解
2021/07/21 Python
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android