方法的重载和重写
方法的重載和重寫
- 方法的重載和重寫
- 前言
- 一、方法的重載(Overload)
- 1.為什么要使用方法重載
- 2.滿足方法重載的條件
- 3.舉例說明
- 二、方法的重寫(Override)
- 1.什么時候考慮方法的重寫
- 2.方法重寫的條件
- 3.注意事項
- 總結
前言
方法的重載和重寫需要大家掌握 ,在筆試面試的時候可能問到。我在自己的理解上做了一下總結,希望可以幫助大家
一、方法的重載(Overload)
1.為什么要使用方法重載
一些功能相似的方法可以寫成同樣的方法名
?功能不同的時候,盡可能讓方法名不同。
2.滿足方法重載的條件
1.在同一個類中2.方法名相同3.形參列表不同(個數,類型,順序)4.方法的重載和返回值類型無關,和權限修飾符也無關
3.舉例說明
1.方法重載舉例
以下的方法都構成重載
public void getSum(int i,int j){System.out.println("1");}public void getSum(double d1,double d2){System.out.println("2");}public void getSum(String s ,int i){System.out.println("3");}public void getSum(int i,String s){System.out.println("4");}
- .不能構成重載舉例
public int getSum(int i,int j){return 0;}public void getSum(int m,int n){}private void getSum(int i,int j){}
二、方法的重寫(Override)
1.什么時候考慮方法的重寫
子類繼承父類以后,繼承過來的方法不能滿足子類當前的業務需求,子類有權利對這個方法進行重新編寫,有必要進行方法的覆蓋2.方法重寫的條件
條件一:兩個類要有繼承關系條件二:重寫后的方法和之前的方法具有:相同的返回值類型相同的方法名 相同的形參列表 條件三:重寫的方法的訪問權限不能更低條件四:重寫之后的方法拋出的異常類型不能大于父類拋出的異常類型
?
?
方法重寫的舉例
class Circle{
public double findArea(){}//求面積
}
class Cylinder extends Circle{
public double findArea(){}//求表面積
}
***************
class Account{
public boolean withdraw(double amt){}
}
class CheckAccount extends Account{
public boolean withdraw(double amt){}
}
3.注意事項
①方法覆蓋只是針對方法,和屬性無關
②私有方法不能覆蓋
③構造方法不能被繼承,所有構造方法也不能被覆蓋
④方法覆蓋只是針對實例方法,靜態方法覆蓋沒有意義
接下來是我的一些理解
1.方法的覆蓋要和多態機制聯合在一起才有意義多態和對象有關系而靜態和對象沒有關系一般情況下,不探討靜態方法的覆蓋,我們會說靜態方法沒有覆蓋沒有多態機制的話,方法覆蓋可有可無如果沒有多態機制,當父類的方法無法滿足子類需求的時候,我們也可以定義新的方法2.私有方法不能覆蓋在外部類無法訪問私有的方法私有方法供本類使用可能我們在一個類當中有一些共同的操作,我們只希望讓它在本類當中調用,不希望它在外部調用,我們就可以聲明為私有的方法3.返回值類型可以不同嗎
對于返回值類型是基本數據類型來說,不可以對于返回值類型是引用數據類型來說,重寫之后的返回值類型更小是可以的
總結
總結
- 上一篇: 自动类型转换和强制类型转换
- 下一篇: Java的多态机制