PHP和JAVA中的重载(overload)和覆盖(override) 介绍

时间:2023-11-01 00:14:33 

重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。
覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指的是子类对父类中方法的覆盖。
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)注意
只有参数不同才能构成重载

标签:overload,override
0
投稿

猜你喜欢

  • Python入门教程(一)Python简单介绍

    2023-10-25 03:19:16
  • 解决mybatis使用char类型字段查询oracle数据库时结果返回null问题

    2024-01-26 03:05:05
  • Sql Server 2005数据库被标记为“可疑”问题

    2009-12-15 10:50:00
  • php 编写安全的代码时容易犯的错误小结

    2024-06-05 09:35:34
  • 利用box-sizing实现div仿框架

    2009-12-08 15:45:00
  • Python基于贪心算法解决背包问题示例

    2022-10-31 01:25:56
  • 屏蔽Flash 右键菜单的方法

    2008-05-24 07:21:00
  • Python中的自定义函数学习笔记

    2023-11-21 15:56:56
  • Microsoft Access项目不能压缩的原因

    2008-11-28 14:48:00
  • 使用Template格式化Python字符串的方法

    2021-08-07 14:42:35
  • Python暴力破解Mysql数据的示例

    2024-01-23 17:29:37
  • Python类如何定义私有变量

    2023-04-18 11:23:23
  • JS验证逗号隔开可以是中文字母数字

    2024-04-19 10:48:08
  • PHP join()函数用法与实例讲解

    2023-06-02 00:39:19
  • 在Python开发环境中调用ChatGPT模型详细过程

    2022-03-25 21:59:29
  • mysql 日期和时间格式转换实现语句

    2024-01-22 22:58:38
  • python实现复制大量文件功能

    2023-09-03 16:42:54
  • python和C++共享内存传输图像的示例

    2021-03-28 01:27:57
  • Python使用MYSQLDB实现从数据库中导出XML文件的方法

    2024-01-14 21:03:01
  • AJAX请求类下载

    2007-08-23 08:33:00
  • asp之家 网络编程 m.aspxhome.com