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 相关文章推荐
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
Feb 22 PHP
php牛逼的面试题分享
Jan 18 PHP
PHP无限分类(树形类)
Sep 28 PHP
PHP文件锁定写入实例解析
Jul 14 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 PHP
laravel中Redis队列监听中断的分析
Sep 14 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实例分享之二维数组排序
2014/05/15 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
js select option对象小结
2013/12/20 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
2017/04/10 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
python多线程操作实例
2014/11/21 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
培训主管的岗位职责
2013/11/23 职场文书
项目开发计划书
2014/01/09 职场文书
食堂标语大全
2014/06/11 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
离职信范本
2015/06/23 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
MySQL 原理与优化之Update 优化
2022/08/14 MySQL