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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
php获取当前网址url并替换参数或网址的方法
Jun 06 PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 PHP
PHP实现的封装验证码类详解
Jun 18 PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
PHP7新特性foreach 修改示例介绍
Aug 26 PHP
PHP文件操作详解
Dec 30 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP实现小程序批量通知推送
Nov 27 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 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
thinkphp实现图片上传功能分享
2014/03/04 PHP
利用PHP函数计算中英文字符串长度的方法
2014/11/11 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
基于jquery的表头固定的若干方法
2011/01/27 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
vue实现登录拦截
2020/06/29 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python中的urllib模块使用详解
2015/07/07 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
Django models文件模型变更错误解决
2020/05/11 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
HTML5 文件域+FileReader 分段读取文件并上传到服务器
2017/10/23 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
What is view? why do we have view?
2012/06/22 面试题
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
体育教育毕业生自荐信
2013/11/21 职场文书
监察建议书格式
2014/05/19 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
MySQL视图概念以及相关应用
2022/04/19 MySQL