手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP和JAVA中的重载(overload)和覆盖(override) 介绍
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
摘要:重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指的是子类对父类中方...

重载:同一个类中,函数名一样,返回值或者参数类型,个数不一样的叫做重载。

覆盖:同名函数,同返回值类型,同参数的叫做覆盖。指的是子类对父类中方法的覆盖。

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和JAVA中的重载(overload)和覆盖(override) 介绍】相关文章:

PHP中的魔术方法总结和使用实例

php实现屏蔽掉黑帽SEO的搜索关键字

PHP SPL标准库中的常用函数介绍

PHP中预定义的6种接口介绍

PHP中的串行化变量和序列化对象

PHP中的流(streams)浅析

使用函数递归实现基于php和MySQL的动态树型菜单

多文件上载系统完整版

PHP中的事务使用实例

简单谈谈php中的unicode和utf8编码

精品推荐
分类导航