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新手上路(二)
Oct 09 PHP
php5 mysql分页实例代码
Apr 10 PHP
php 清除网页病毒的方法
Dec 05 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
Oct 18 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
JSON.stringify 语法实例讲解
2012/03/14 Javascript
html超链接打开窗口大小的方法
2013/03/05 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jQuery根据表单name获取值的方法
2016/05/24 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
vue-router重定向和路由别名的使用讲解
2019/01/19 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
从零学Python之hello world
2014/05/21 Python
Python面向对象类的继承实例详解
2018/06/27 Python
python笔记之mean()函数实现求取均值的功能代码
2019/07/05 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
Python列表切片常用操作实例解析
2020/03/10 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Django URL参数Template反向解析
2020/11/24 Python
CSS3 边框效果
2019/11/04 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
法学专业自我鉴定
2014/02/05 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
会计学专业求职信
2014/07/17 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书