[Java] 6.2. 改寫

改寫繼承的方式,讓繼承的類別擁有符合目前行為的方法。

 

image/svg+xml6.2 改寫 - Overriding class Main{ public static void main( String [] args){ Employee e = new Employee (); e.id = "k1234567890" ; e.name = "jack" ; e.gender = " 男⽣ " ; e.setAge( 25 ); e.employeeID = "048679" ; e.salary = 40000 ; e.show (); } } 執⾏結果 我的⾝份證字號是 k1234567890 姓名是 jack 姓別是男⽣ 年齡是 25 class Employee extends Person { String employeeID; int salary; void goToWork(){ System.out.println( " 上班去 " ); } void comeOffWork(){ System.out.println( " 下班了 " ); } void show (){ System.out.println( " 我的⾝份證字號是 " + id); System.out.println( " 姓名是 " + name); System.out.println( " 性別是 " + gender); System.out.println( " 年齡是 " + getAge()); System.out.println( " 員⼯編號是 " + employeeID ); System.out.println( " 薪資是 " + salary ); } } class Main{ public static void main( String [] args){ Employee e = new Employee (); e.id = "k1234567890" ; e.name = "jack" ; e.gender = " 男⽣ " ; e.setAge( 25 ); e.employeeID = "048679" ; e.salary = 40000 ; e.show (); } } 執⾏結果 我的⾝份證字號是 k1234567890 姓名是 jack 性別是男⽣ 年齡是 25            員⼯編號是 048679       薪資是 40000 我的⾝份證字號是 k1234567890 class Main{ public static void main( String [] args){ Person p = new Person (); p.id = "j0987654321" ; p.name = "eric" ; p.gender = " 男⽣ " ; p.setAge( 20 ); p.show (); Employee e = new Employee (); e.id = "k1234567890" ; e.name = "jack" ; e.gender = " 男⽣ " ; e.setAge( 25 ); e.employeeID = "048679" ; e.salary = 40000 ; e.show (); } } 執⾏結果 我的⾝份證字號是 j0987654321 姓名是 eric 性別是男⽣ 年齡是 20 我的⾝份證字號是 k1234567890 姓名是 jack 性別是男⽣ 年齡是 25 員⼯編號是 048679 薪資是 40000 J6_2_1 – Main.java 2. ⼈員類別中有個⾃我介紹⽅法( show() ),但若在員⼯類別重新定 義⼀個⼀樣⼀樣的⾃我介紹⽅法,讓這個⽅法的名稱、參數與回傳值型 別皆是相同的話,這時就可以進⾏改寫。⽽改寫⽅法時,會在員⼯類別 圖會將⾃我介紹⽅法( show() )列⽰出來,以表⽰要進⾏改寫的動作。 J6_2_2 – Employee.java 2. 設定員⼯物件上的員⼯編號( employeeID )與薪資( salary )。 3. 但因為⾃我介紹⽅法是繼承⾃員⼯類別的( Person ),⽽員⼯類別上的 ⾃我介紹⽅法並未有列印出員⼯編號( employeeID )與薪資( salary )等 資訊,因此在員⼯在進⾏⾃我介紹時,並未輸出員⼯編號與薪資資訊。⽽事實 上員⼯類別也是無法列印出員⼯編號與薪資屬性中的資料的,因為員⼯編號與 薪資屬性是專屬於員⼯類別的,⼈員類別並不會知道有這兩個屬性存在。 1. 建立員⼯物件( Employee )。 1. 這是員⼯類別( Employee ),它繼承⾃⼈員類別( Person )。 3. 改寫主要改變的是⽅法內容的部份。現在將原本員⼯資訊缺 少的部份補上(員⼯編號屬性 (employeeID) 與薪資 (salary) 屬性中的資料),好讓員⼯可以員⼯的⾝份進⾏⾃我介紹。 J6_2_2 – Main.java 4. 建立⼀個員⼯物件( Employee )。 5. 現在是以⼀個員⼯的⾝份進⾏⾃我介紹,即以員⼯物件 呼叫我⾃介紹⽅法( show() )。這時您會發現列出的資訊 會包含員⼯編號( employeeID )與薪資( salary )兩個 屬性的資料,這是因為我們透過改寫,為員⼯類別的⾃我介 紹⽅法加上了輸出員⼯編號與薪資兩個屬性的資料。 J6_2_3 – Main.java 1. 唯有透過繼承,才有繼承 的⽅法,可被⼦類別改寫。 2. 建立⼈員物件( Person )。 3. ⼈員物件上的⾃我介紹⽅法,只會列出⾝份證字號( id )、姓名 name )、姓別( gender )與年齡( age 4 個資訊。它並不會受到 員⼯類別( Employee )改寫⾃我介紹⽅法⽽受到影響。 4. 建立員⼯物件( Employee )。 5. ⽽員⼯類別因為改寫了⾃我介紹⽅法的關係,因此會 列印出 6 個資訊 - ⾝份證字號、姓名、姓別、年齡、員⼯編 號( employeeID )與新資( salary )。 改寫,以員⼯的⾝份進⾏⾃我介紹 改寫只發⽣在⼦類別中 如何以員⼯的⾝份進⾏⾃我介紹? 1 1 1 1 2 1 1 1

留言