java的重写、重载、覆盖的差别
生活随笔
收集整理的這篇文章主要介紹了
java的重写、重载、覆盖的差别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多態性?
通過繼承,一個類能夠用作多種類型:能夠用作它自己的類型、不論什么基類型,或者在實現接口時用作不論什么接口類型。這稱為多態性?
重載?
每一個類型成員都有一個唯一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。
繼承,重寫和隱藏成員 (重寫 = 覆蓋)
派生的類型繼承其基本類型的全部成員;也就是說。這些成員是在派生類型之上定義的,并可用于派生類型。繼承成員的行為和質量能夠通過下面兩種方式來改動:?
1、派生類型可通過使用同樣的簽名定義一個新成員。從而隱藏繼承的成員。將先前的公共成員變成私有成員。或者為標記為 final 的繼承方法定義新行為時,能夠採取這樣的方法。?
2、派生類型能夠重寫繼承的虛方法。
方法名,參數同樣形成重寫,重寫的方法不能減少原方法的"可見度",也不能改變原方法的返回值類型。?
方法名同樣,參數不同(個數、類型)形成重載,重載的方法可看成一個全新的方法。與原方法相比它能夠有不同的"可見度"和“返回值類型”。例如以下例:?
class A {?
protected int method1(int a, int b) { return 0; }?
}?
public class B extends A{?
public int method1(int a, int b) { return 0; } //正確,重寫父類方法,能夠擴大訪問權限?
//private int method1(int a, int b) { return 0; } //錯誤,重寫父類方法,不能減少了訪問權限?
//private long method1(int a, int b) { return 0; } //錯誤。重寫父類方法。不能改變返回值類型?
public short method1(int a, long b) { return 0; }//正確,重載自身的方法。能夠有不同的訪問權限和返回值類型?
private int method1(int a, long b) { return 0; }//正確,重載自身的方法,能夠有不同的訪問權限和返回值類型?
}?
但這里 方法public short method1(int a, long b) { return 0; }和 方法private int method1(int a, long b) { return 0; }不能同一時候存在,由于在同一類中。不同意存在同樣名字和參數類型的方法(重寫的方法)。 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
通過繼承,一個類能夠用作多種類型:能夠用作它自己的類型、不論什么基類型,或者在實現接口時用作不論什么接口類型。這稱為多態性?
重載?
每一個類型成員都有一個唯一的簽名。方法簽名由方法名稱和一個參數列表(方法的參數的順序和類型)組成。
僅僅要簽名不同。就能夠在一種類型內定義具有同樣名稱的多種方法。
當定義兩種或多種具有同樣名稱的方法時,就稱作重載。
即重載時同樣名稱成員的參數列表是不同樣的(參數順序和類型)。?
繼承,重寫和隱藏成員 (重寫 = 覆蓋)
派生的類型繼承其基本類型的全部成員;也就是說。這些成員是在派生類型之上定義的,并可用于派生類型。繼承成員的行為和質量能夠通過下面兩種方式來改動:?
1、派生類型可通過使用同樣的簽名定義一個新成員。從而隱藏繼承的成員。將先前的公共成員變成私有成員。或者為標記為 final 的繼承方法定義新行為時,能夠採取這樣的方法。?
2、派生類型能夠重寫繼承的虛方法。
重寫方法提供了對方法的一種新定義。將依據執行時的值的類型。而不是編譯時已知的變量類型來調用方法。僅僅有當虛方法沒有標記為 final 且新方法至少能夠像虛方法一樣進行訪問的情況下,成員才干重寫虛方法。?
方法名,參數同樣形成重寫,重寫的方法不能減少原方法的"可見度",也不能改變原方法的返回值類型。?
方法名同樣,參數不同(個數、類型)形成重載,重載的方法可看成一個全新的方法。與原方法相比它能夠有不同的"可見度"和“返回值類型”。例如以下例:?
class A {?
protected int method1(int a, int b) { return 0; }?
}?
public class B extends A{?
public int method1(int a, int b) { return 0; } //正確,重寫父類方法,能夠擴大訪問權限?
//private int method1(int a, int b) { return 0; } //錯誤,重寫父類方法,不能減少了訪問權限?
//private long method1(int a, int b) { return 0; } //錯誤。重寫父類方法。不能改變返回值類型?
public short method1(int a, long b) { return 0; }//正確,重載自身的方法。能夠有不同的訪問權限和返回值類型?
private int method1(int a, long b) { return 0; }//正確,重載自身的方法,能夠有不同的訪問權限和返回值類型?
}?
但這里 方法public short method1(int a, long b) { return 0; }和 方法private int method1(int a, long b) { return 0; }不能同一時候存在,由于在同一類中。不同意存在同樣名字和參數類型的方法(重寫的方法)。 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的java的重写、重载、覆盖的差别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 头皮发麻!半夜追剧腾讯视频突然跳转恐怖片
- 下一篇: 60岁快递员意外猝死 官方将开展劳动定额