方法重寫和方法重載
在Java中,以下關于方法重載和方法重寫描述正確的是?
方法重載和方法的重寫實現(xiàn)的功能相同
方法重載出現(xiàn)在父子關系中,方法重寫是在同一類中
方法重載的返回值類型必須一致,參數(shù)項必須不同
方法重寫的返回值類型必須相同或相容。(或是其子類)
方法重載與方法重寫、this關鍵字和super關鍵字
1、方法重載
重載能夠使具有相同名稱但不同數(shù)目和類型參數(shù)的類傳遞給方法。
注:
一是重載方法的參數(shù)列表必須與被重載的方法不同,并且這種不同必須足以清楚地確定要調(diào)用哪一個方法;
二是重載方法的返回值類型可以與被重載的方法相同,也可以不同,但是只有返回值類型不同不能表示為重載。
例如,最常用的println()方法在JDK的java.io.PrintStream中定義了十幾種形式的重載,常用格式如下:
public void println(int i) {....}
public void println(double i) {....}
public void println(String i) {....}
/**********************************************************
* "方法重載"的使用方法及其示例代碼*/
public class OverloadRewrite
{
void num(int i){
System.out.println("接收到的是int類型參數(shù),其值="+i);
}
void num(float j){
System.out.println("接收到的是float類型參數(shù),其值="+j);
}
void num(String k){
System.out.println("接收到的是String類型參數(shù),其值="+k);
}
public static void main(String [] args) {
OverloadRewrite a=new OverloadRewrite();
a.num(100);
a.num(100.20f);
a.num("Hello!");
}
}
2、方法重寫
當子類繼承父類時,可以擁有父類中的成員方法和成員變量,在子類創(chuàng)建獨有的成員即可。但是,如果創(chuàng)建一個與父類中相同名稱、相同返回值類型、相同參數(shù)列表的方法,只是方法體中的實現(xiàn)不同,以實現(xiàn)不同于父類的功能,這種方式被稱為方法重寫或方法覆蓋。
注:
一是返回值類型與參數(shù)列表必須與被重寫的返回值類型和參數(shù)列表相同,否則不能稱為重寫;
二是訪問修飾符的限制一定要大于被重寫方法的訪問修飾符(public > protected > default > private);
三是重寫方法一定不能拋出新的檢查異;蛘弑缺恢貙懛椒暶鞲訉挿旱臋z查型異常。例如,父類的一個方法聲明了一個檢查異常IOException,在重寫這個方法時,就不能拋出Exception,只能拋出IOException的子類異常,可以拋出非檢查異常。
/**********************************************************
* "方法重寫"的使用方法及其示例代碼*/
public class OverloadRewrite
{
public String Name;
public String Address;
public OverloadRewrite(String name,String address) { //構(gòu)造方法
this.Name=name;
this.Address=address;
}
public String toString() { //重寫toString
return "我的名字是:"+Name+",產(chǎn)地是:"+Address;
}
public class sichuancai extends OverloadRewrite{ // 繼承
public String Detail;
public sichuancai(String name,String address,String detail){ //構(gòu)造方法
super(name, address); //super調(diào)用父類相應的構(gòu)造方法
this.Detail=detail;
}
}
// public String toString() { //重寫toString
// return "我的名字是:"+Name+",產(chǎn)地是:"+Address+",特點是:"+this.Detail;
// }
public static void main(String [] args) {
OverloadRewrite food=new OverloadRewrite("面條", "意大利");
System.out.println(food);
sichuancai sichuan=food.new sichuancai("麻辣燙", "成都", "麻辣和香辣");
System.out.println(sichuan);
}
}
3、this關鍵字
this關鍵字可用于在任何實例方法內(nèi)指向當前對象,也可指向?qū)ζ湔{(diào)用當前方法的對象,或者在需要當前類型對象引用時使用。
注:當一個類的屬性名或成員變量與訪問該屬性的方法參數(shù)名相同時,則需要使用this關鍵字來訪問類中的屬性,以區(qū)分類的屬性和方法中的參數(shù)。
4、super關鍵字
由于子類不能繼承父類的構(gòu)造方法,因此要調(diào)用父類的構(gòu)造方法,必須在子類的構(gòu)造方法的第一行使用super()。
super()方法會調(diào)用父類相應的構(gòu)造方法,完成子類對象的部分初始化工作。
注:程序在以下兩種情況下需要使用super()關鍵字:
一是在類的構(gòu)造方法中,通過super語句調(diào)用該類的父類的構(gòu)造方法。
二是在子類中訪問父類中的成員。
【方法重寫和方法重載】相關文章:
方法重載和方法重寫的概念和區(qū)別09-06
方法重載和方法重寫的區(qū)別是什么11-16
方法重載的條件09-23
什么是方法重載11-15
方法重載與覆蓋的區(qū)別11-04
預習方法和學期預習方法10-26
讀書方法和心得03-14
讀書的方法和技巧07-27
預習的策略和方法04-23
演講的技巧和方法11-14