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&amp;&amp;mysql)一
Oct 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 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生成html分页列表的代码
2007/03/18 PHP
PHP-MySQL教程归纳总结
2008/06/07 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
js监听输入框值的即时变化onpropertychange、oninput
2011/07/13 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
[06:53]2018DOTA2国际邀请赛寻真——勇于创新的Vici Gaming
2018/08/14 DOTA
python查询sqlite数据表的方法
2015/05/08 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
python实现八大排序算法(1)
2017/09/14 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
解决python读取几千万行的大表内存问题
2018/06/26 Python
python 实现UTC时间加减的方法
2018/12/31 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
简单了解django缓存方式及配置
2019/07/19 Python
Python企业编码生成系统之主程序模块设计详解
2019/07/26 Python
python统计文章中单词出现次数实例
2020/02/27 Python
如何利用python读取micaps文件详解
2020/10/18 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
中医专业职业生涯规划书范文
2014/01/04 职场文书
个性与发展自我评价
2014/02/11 职场文书
超市国庆节促销方案
2014/02/20 职场文书
《春雨》教学反思
2014/04/24 职场文书
年度优秀员工获奖感言
2014/08/15 职场文书
2015年度物业公司工作总结
2015/04/27 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
Python自动化测试PO模型封装过程详解
2021/06/22 Python
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android