當前位置:首頁 » 編程語言 » java覆蓋

java覆蓋

發布時間: 2022-01-08 02:43:37

『壹』 java中覆蓋和重載的區別

Java中覆蓋和重載的區別如下:
override 可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了聲明,而在實現時,就需要實現介面聲明的所有方法。除了這個典型的用法以外,在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:
1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;
2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;
4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。
overload對來說可能比較熟悉,可以翻譯為重載,它是指可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然後再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。在使用重載要注意以下的幾點:
1、在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以是fun(int, float), 但是不能為fun(int, int));
2、不能通過訪問許可權、返回類型、拋出的異常進行重載;
3、方法的異常類型和數目不會對重載造成影響;
4、對於繼承來說,如果某一方法在父類中是訪問許可權是priavte,那麼就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。
下面是對override和overload的測試程序,其中注釋中的內容都是會產生編譯錯誤的代碼,將注釋去掉,看看在編譯時會產生什麼效果。
// 對overload測試的文件:OverloadTest.java
public class OverloadTest {
// 下面幾個方法用來驗證可以通過定義不同的參數類型和參數的數目進行方法重載。
public void fun(){
System.out.println("method fun in OverloadTest, no parameter");
}

public void fun(float f) {
System.out.println("method fun in OverloadTest, parameter type: float");
}

public void fun(int i){
System.out.println("method fun in OverloadTest, parameter type: int");
}

public void fun(int i1, int i2) {
System.out.println("method fun in OverloadTest, parameter type: int, int");
}

// 下面的兩個方法用來驗證可以通過定義不同的參數順序進行方法重載。
// 需要注意:這里的參數肯定不是相同的類型,否則的順序的先後就毫無意義。
public void fun1(int i, float f) {
System.out.println("method fun1 in OverloadTest, sequence of parameters is: int, float");
}

public void fun1(float f, int i) {
System.out.println("method fun1 in OverloadTest, sequence of parameters is: float, int");
}

// 下面的兩個方法用來驗證方法拋出的異常對於重載的影響.
// 無論是異常的類型還是異常的個數都不會對重載造成任何的影響。
public void fun2() throws TestException {
System.out.println("fun2 in OverloadTest, exception: TestException");
}

public void fun2(int i) throws TestException, TestException1 {
System.out.println("fun2 in OverloadTest, exception: TestException, TestException1");
}

public void fun2(float f) throws Exception {
System.out.println("fun2 in OverloadTest, exception: Exception");
}

// 不能通過拋出的異常類型來重載fun方法。
//public void fun(int i) throws Exception {
// System.out.println("method fun in OverloadTest, parameter type: int, exception: Exception");
//}

// 不能通過返回值重載fun方法。
//public boolean fun(int i) throws Exception {
// System.out.println("method fun in OverloadTest, parameter type: int, exception: Exception, return: boolean");
// return true;
//}

private void fun3() { }

// 不能通過不同的訪問許可權進行重載
public void fun3() { }

public static void main(String[] args) {
// 這里只是定義了OverloadTest的實例,所以test不會調用
// OverloadTest1中的方法。
OverloadTest test = new OverloadTest1();
// 這里定義了OverloadTest1的實例,因為OverloadTest1是OverloadTest
// 的子類,所以test1會調用OverloadTest中的方法。
OverloadTest1 test1 = new OverloadTest1();

try {
int i = 1, j = 2, m = 3;

// 這里不會調用OverloadTest1的fun方法
// test.fun(i, m, j);
test1.fun(i, j, m);
test1.fun();
// 這個調用不會執行,因為fun3()在OverloadTest中訪問許可權是priavte
//test1.fun3();
test1.fun3(i);
} catch(Exception e) { }
}
}

class OverloadTest1 extends OverloadTest{
// 在子類中重載fun
public void fun(int i, int m, int n) {
System.out.println("Overload fun1 in OverloadTest1, parameter type: int, int, int");
}

// 這個不是對父類中方法的重載,只是一個新的方法。
public void fun3(int i) {
System.out.println("fun2 in OverloadTest1");
}
}

// 對override測試的文件:OverrideTest.java
public class OverrideTest {
public void fun() throws TestException {
System.out.println("method fun in OverrideTest");
}

private void fun1() {
System.out.println("method fun1 in OverrideTest");
}

public static void main(String[] args) {
OverrideTest test = new OverrideTest1();
try {
test.fun();
test.fun1();
} catch(Exception e) { }
}
}

class OverrideTest1 extends OverrideTest{
// 以下正常Override
public void fun() throws TestException2 {
System.out.println("fun in OverrideTest1");
}

// 不能Override父類中的方法,因為它定義了不同的異常類型和
// 返回值。
//public int fun() throws TestException1 {
// System.out.println("method fun in Test");
// return 1;
//}

// 不能Override父類中的方法,因為它拋出了比父類中非法范圍
// 更大的異常。
//public void fun() throws Exception {
// System.out.println("fun in OverrideTest1");
//}

// 這個方法並沒有Override父類中的fun1方法,因為這個方法在
// 父類是private類型,所以這里只是相當於定義了一個新方法。
public void fun1() {
System.out.println("method fun1 in Test");
}
}

class TestException extends Exception{
public TestException(String msg) {
super(msg);
}
}

class TestException1 extends TestException {
public TestException1(String msg) {
super(msg);
}
}

class TestException2 extends TestException {
public TestException2(String msg) {
super(msg);
}
}

『貳』 java中方法的覆蓋及重載是什麼意思

class A{
void a(){}
}
class B extends A{
void a(){} //這是覆蓋 名字和參數都存在A裡面
void a(int a){}//這是重載 你看下就應該明白了是什麼區別 和意思了
}

『叄』 Java:值覆蓋,急,求救

從現在題主已給的條件來看,只有一種可能,就是splitvos里的每一個對象的每一個ParentVo屬性都是指引的同一個一個對象,所以多次循環設值後,最終被最後一個值覆蓋

因此,建議題主檢查哈splitvos集合初始化時,其中的每一個對象的ParentVo屬性是如何賦值的,是否存在都賦值都一個對象的情況

『肆』 如何用JAVA實現文件的覆蓋

在實際寫入文件時,有兩種寫入文件的方式:覆蓋和追加。其中「覆蓋」是指清除原文件的內容,寫入新的內容,默認採用該種形式寫文件,「追加」是指在已有文件的末尾寫入內容,保留原來的文件內容,例如寫日誌文件時,一般採用追加。在實際使用時可以根據需要採用適合的形式,可以使用: public FileOutputStream(String name, boolean append) throws FileNotFoundException 只需要使用該構造方法在構造FileOutputStream對象時,將第二個參數append的值設置為true即可。
try {BufferedWriter out = new BufferedWriter(new FileWriter(outfilename));
out.write(aString);
out.close();
} catch (IOException e) {}這種情況就是覆蓋的try {BufferedWriter out = new BufferedWriter(new FileWriter(filename, true));
out.write(aString);
} catch (IOException e) {}這種情況是添加

『伍』 java中的覆蓋是什麼意思,誰能寫個簡單的代碼 舉例解釋下

你可以理解為父類是一個模板,子類拿過來之後在上面修改。
舉個通俗的例子,盜墓筆記里張起靈家族手指都長,都長生不老。然後呢:

父親姓張,那麼他的前五個孩子都姓張,但是呢,第六個孩子跟媽媽姓王了,但是他們都繼承了父類手指長,長生不老的特性。老六就是覆蓋了父類中的張姓。
為啥寫父類還要覆蓋?
寫父類是因為很多子類都有一些通用的屬性,覆蓋是因為每一個子類還有些不同之處。
比如鳥類:通用的屬性是羽毛,會飛,兩只腿,下蛋。
但是鴕鳥這個類比較特殊,它繼承了鳥類但是不會飛,所以就覆蓋父類的方法,把飛行這項重新寫一下。
不知道你明白了沒。我是這么理解的。如果有不對的地方還請見諒。

『陸』 java 中覆蓋的作用以及特點

覆蓋?你說的是重寫呢還是值的覆蓋,
重寫就是覆蓋了一個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了聲明,而我們在實現時,就需要實現介面聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:
1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;
2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;
4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。

『柒』 java 文件寫入後如何覆蓋之前的內容怎麼辦啊

你的意思就是不覆蓋之前的內容,追加寫到文件裡面是不?
那就FileWriter a=new FileWriter("d:/as.txt");改成
FileWriter a=new FileWriter("d:/as.txt",true);

『捌』 java方法重載與覆蓋

是的,方法的重載是在同類中,方法名相同但參數個數或參數類型不同
方法的覆蓋則是存在於父類與子類中,一般都有 @override 進行標識

『玖』 java 方法覆蓋

對比Java語言中的覆蓋和重載

初次見到這兩個單詞並沒有什麼特別的感覺,但是時間長了,卻發現書上一會兒用override,一會兒又用overload,搞得我的迷迷糊。於是就做了個總結,希望能對和我一樣對這兩個概念模糊不清的網友有一個幫助。
override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對介面方法的實現,在介面中一般只是對方法進行了聲明,而我們在實現時,就需要實現介面聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:
1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;
2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;
4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。
overload對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然後再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。在使用重載要注意以下的幾點:
1、在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以是fun(int,float),但是不能為fun(int,int));
2、不能通過訪問許可權、返回類型、拋出的異常進行重載;
3、方法的異常類型和數目不會對重載造成影響;
4、對於繼承來說,如果某一方法在父類中是訪問許可權是priavte,那麼就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。
下面是對override和overload的測試程序,其中注釋中的內容都是會產生編譯錯誤的代碼,我們將注釋去掉,看看在編譯時會產生什麼效果。
//對overload測試的文件:OverloadTest.java
publicnewOverrideTest1();
try{
test.fun();
test.fun1();
}catch(Exceptione){}
}
}

{
//以下正常Override
publicvoidfun()throwsTestException2{
System.out.println("funinOverrideTest1");
}

//不能Override父類中的方法,因為它定義了不同的異常類型和
//返回值。
//publicintfun()throwsTestException1{
//System.out.println("methodfuninTest");
//return1;
//}

//不能Override父類中的方法,因為它拋出了比父類中非法范圍
//更大的異常。
//publicvoidfun()throwsException{
//System.out.println("funinOverrideTest1");
//}

//這個方法並沒有Override父類中的fun1方法,因為這個方法在
//父類是private類型,所以這里只是相當於定義了一個新方法。
publicvoidfun1(){
System.out.println("methodfun1inTest");
}
}

{
publicTestException(Stringmsg){
super(msg);
}
}

{
publicTestException1(Stringmsg){
super(msg);
}
}

{
publicTestException2(Stringmsg){
super(msg);
}
}

『拾』 java中的覆蓋和重載是什麼區別

兩個是多態性的表現
前者是當前類和父類的多態表現,如你和你老爸吃飯的方法,他吃飯前喜歡喝點水,你吃之前喜歡喝點湯。

重載是類自身的,比如你還是吃吧,你吃香蕉喜歡不去皮就吃了、吃蘋果帶皮吃、吃大米喜歡生吃。。。。等等。。。哈哈。。。。。你理解了嗎?
海楓科技

熱點內容
好醫生連鎖店密碼多少 發布:2024-09-20 05:09:38 瀏覽:14
魔獸腳本代理 發布:2024-09-20 05:09:35 瀏覽:96
python登陸網頁 發布:2024-09-20 05:08:39 瀏覽:755
安卓qq飛車如何轉蘋果 發布:2024-09-20 04:54:30 瀏覽:177
存儲過程中in什麼意思 發布:2024-09-20 04:24:20 瀏覽:314
php顯示數據 發布:2024-09-20 03:48:38 瀏覽:499
源碼安裝軟體 發布:2024-09-20 03:44:31 瀏覽:353
入門編程游戲的書 發布:2024-09-20 03:31:26 瀏覽:235
e盒的演算法 發布:2024-09-20 03:30:52 瀏覽:143
win10登錄密碼如何修改登錄密碼 發布:2024-09-20 03:09:43 瀏覽:70