劉妍東
摘 要 “繼承”是面向對象軟件技術當中的一個概念。如果一個類A繼承自另一個類B,就把這個A稱為“B的子類”,而把B稱為“A的父類”。繼承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。在令子類繼承父類的同時,可以重新定義某些屬性,并重寫某些方法,即覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。另外,為子類追加新的屬性和方法也是常見的做法。
關鍵詞 繼承 java類 父類 子類
1知識引入
生活中繼承的例子隨處可見,如,父親和兒子就是一種繼承關系,父親擁有房屋、股票、存款等財產,兒子可以繼承這些財產并在此基礎上擁有的自己的財產。如,車有車輪數、顏色、生產商等特性,自行車、小轎車、貨車等可以繼承這些特性,在此基礎上也可以擁有自己的特性。
2抽象
我們已經學習過類的設計,在面向對象的程序設計中,也可以采用繼承的機制來組織、設計系統中的類,可以使得程序結構清晰、降低編碼和維護的工作量,提高程序開發的效率。
下面我們以設計具體的類為例,來引入繼承的機制,如,某個培訓機構需要一個“管理系統”來管理所有的人員,人員包括學生、教師、員工等,這需要我們建立3個類,學生類、教師類和員工類。
首先,學生類應該有:學號、姓名、性別、年齡、成績等屬性,選課等行為。教師類應該有:教師編號、姓名、性別、年齡、工資等屬性,授課等行為。員工類應該有:員工編號、姓名、性別、年齡、崗位等屬性,管理等行為。其中,3個類中都含有姓名、性別、年齡屬性,代碼出現了重復。有沒有精簡代碼的好方法呢?
下面,我們通過java里面繼承的機制來解決代碼重復的問題。在java中我們把重復的屬性抽象出來定義成一個父類??梢栽诟割惢A上衍生出子類。
3代碼實現
我們可以先定義一個父類Person類,把學生類、教師類、員工類的共同屬性,姓名、性別、年齡放在Person類中。給每個屬性合適的數據類型和名稱。這樣的話, 學生類、教師類、員工類就可以定義為Person類的子類來繼承上述成員。
class Person{String name;String sex;ing age}
我們定義一個子類學生類Student繼承Person類,extends是描述繼承關系的關鍵字。這樣子類就擁有了父類所有的成員變量和方法,除此之外它可以定義自己的特性和行為,如學號、成績、選課。
public class Student extends Person{String stuNo;double grade;void elecCourse;
System.out.println("調用選課系統");}
同樣,定義子類教師類Teacher繼承Person類,Teacher類也擁有了Person類的成員。再定義自己的特性,教師編號、工資、授課等。這樣子類即擁有了父類Person所有的成員,也擁有了自己的所有特性了。子類員工類Employee也可以使用同樣的方法繼承Person類。
public class Teacher extends Person{String teaNo;double salary;void teaching{System.out.println("調用授課系統");}
下面,我們通過對象驗證一下吧。首先生成Student類的對象stu。Student類通過繼承,擁有了Person類的所有成員,所以,我們也可以通過stu對象調用繼承下來的name成員變量,賦值為“王芳”,調用繼承下來的sex成員變量,賦值為“女”,也可以調用繼承下來age成員變量,賦值為18。同樣可以調用本類定義的stuNo學號成員變量,賦值為“142212401”,grade成績成員變量,賦值為“80”,再調用本類定義的選課方法。最后通過輸出語句,顯示這個對象的所有屬性值。運行結果包括:選課方法、姓名、性別、年齡、學號、成績。
public class Test {public static void main(String[ ] args) {Student stu=new Student;stu.name=王芳;stu.sex=女;stu.age=18;stu.stuNo="142212401";stu.grade=80;stu.elecCourse;System.out.println("姓名:+stu.name+",性別:stu.sex+",年齡:"+stu.age+",學號:"+stu.stuNo+",成績:"+stu.grade);}
運行結果:
調用選課系統
姓名:王芳,性別:女,年齡:18,學號:142212401,成績:80.0
我們再生成Teacher類的對象tea。調用從Person類繼承下來的name,sex,age,然后調用本類自身的成員變量teaNo,salary,調用授課方法teaching。
加上輸出語句,顯示對象所有屬性。
通過結果我們同樣可以看到,姓名、性別、年齡等都是在父類Person類中定義的成員變量,通過繼承的方式,可以使子類也擁有父類的成員,同樣子類也可以根據需要定義自己的成員。
4總結
從以上例子中,我們可以看出,繼承是類之間的一種關系,通過繼承,可以在已經存在的類的基礎上,進行擴展,從而產生新的類。由繼承而得到的類稱為子類,被繼承的類稱為父類(或超類)。子類繼承父類的屬性和行為,并根據需要增加自己新的屬性和行為。
繼承,是不是很好理解。大家試試設計一下員工子類,讓我們的系統更加完整吧。