java物件導向 十一 覆寫

2021-06-26 11:50:25 字數 1680 閱讀 6608

在子類和父類的關係中,如果子類中有定義和父類完全相同的方法或屬性的名稱,就稱為覆寫.

當子類定義了和父類在方法名稱,返回值型別,引數型別及個數完全相同的方法時,稱為方法的覆寫.

先演示沒有覆寫的操作,範例1:

class a

}class b extends a

public class demo

}

執行結果:

以上程式例項化的是子類物件,但由於子類中沒有print()方法,所以就使用從父類中繼承而來的print()方法.

下面實現方法覆寫,範例2:

class a

}class b extends a

}public class demo

}

執行結果:

當乙個類中的方法被覆寫後,如果例項化的是這個子類物件,則呼叫的方法就是被覆寫過的方法.

注意:子類被覆寫的方法的訪問控制許可權不能比父類更嚴格.(private錯例:

class a

}class b extends a

}public class demo

}

編譯結果:

通常,只要是方法,都是public.

當乙個子類覆寫了乙個父類方法時,子類若想呼叫父類的被覆寫過的方法,則要在方法前加"super".(如果子類沒有被覆寫,則可以寫this,this的執行過程是先從本類找,如果沒有再去父類找.super則是直接由子類呼叫父類的方法,不再找子類)

範例3:

class a

}class b extends a

}public class demo

}

執行結果:

注意:如果父類的方法名稱為private,則子類無法覆寫,也不會這樣去編寫**.

當乙個子類定義了和父類重名的屬性名稱時,就表示屬性的覆蓋.範例4:

class a

class b extends a

}public class demo

}

執行結果:

範例4的操作幾乎沒有意義,因從開發來講,屬性一定要封裝,封裝之後就沒有覆蓋這一概念了.

過載和覆寫的區別:

1.過載的方法名稱相同,引數的型別及個數不同;覆寫的方法名稱,引數型別及個數,返回值型別完全相同;

2.過載沒有許可權要求,被子類所覆寫的方法不能擁有比父類更嚴格的訪問控制許可權

3.過載發生在乙個類中,覆寫發生在繼承關係中.

Java覆寫詳解

覆寫 如果子類定義了與父類相同的屬性或方法,這個操作就稱為覆寫 方法的覆寫 子類定義了與父類方法名稱,引數型別,及個數完全相同的方法,但是覆寫不能有比父類更嚴格的訪問控制許可權 觀察簡單覆寫 package testoverride author weiwei description 簡單的覆寫 c...

物件導向 練習 十一

學生類 成員變數 name,age 構造方法 無參,帶兩個參 成員方法 get set show 輸出該類的所有成員變數值 b 給成員變數賦值 a set 方法 b 構造方法 c 輸出成員變數值的方式 a 通過get 分別獲取然後拼接 b 通過呼叫show 方法搞定 class demo4 stud...

JAVA 物件導向

this關鍵字只能在方法內部使用,表示 呼叫方法的那個物件 的引用。this 用於建構函式之間進行相互呼叫。語句只能定義在建構函式的第一行。static 靜態 使用注意事項 1.靜態方法只能訪問靜態成員。非靜態方法可以訪問靜態成員。2.靜態方法中不可以定義this,super關鍵字。因為靜態優先於物...