国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP和JAVA中的重載(overload)和覆蓋(override) 介紹

2024-05-04 23:15:34
字體:
來源:轉載
供稿:網友
重載:同一個類中,函數名一樣,返回值或者參數類型,個數不一樣的叫做重載。
覆蓋:同名函數,同返回值類型,同參數的叫做覆蓋。指的是子類對父類中方法的覆蓋。
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)注意
只有參數不同才能構成重載
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扬中市| 阿城市| 天气| 大关县| 抚远县| 固镇县| 南丰县| 柳州市| 岳阳县| 达尔| 怀远县| 上蔡县| 铁岭县| 宁德市| 邹城市| 云林县| 新和县| 河北省| 喀喇| 许昌县| 巢湖市| 建宁县| 荃湾区| 江北区| 阳原县| 牟定县| 延吉市| 西乌| 景谷| 彭阳县| 宣武区| 绍兴县| 长沙市| 高雄市| 集安市| 区。| 忻州市| 信阳市| 北辰区| 岢岚县| 长春市|