Java繼承和多型實現例子
阿新 • • 發佈:2018-12-16
繼承,多型的簡單例子
我們想做一個類用於存放CD,DVD等光碟,要應用多型和繼承,去除重複性程式碼,便於以後維護(新增新的格式光碟,如:MP3,MP4),因此我們首先建立一個工程demo,建立database類用於存放光碟資料,建立光碟類ltem,建立CD類,建立DVD類,CD和DVD共同繼承ltem的屬性和方法(CD、DVD都是光碟),減少重複的屬性編寫,也便於database類的Listltem容器維護(只需維護光碟類即可)。
通過這個例子我們更好的熟悉Java中的繼承和多型特性。
建立database類
package demo; import java.util.ArrayList; public class database { ArrayList<ltem> listltem=new ArrayList<ltem>();//建立ArrayList容器,儲存型別為ltem public void add(ltem item) {//add方法,傳入ltem型別, listltem.add(item);//新增進入listltem容器中 } public void list() {//list方法 負責遍歷容器中所有資料 for(ltem item:listltem) { item.print(); } } public static void main(String[] args) { database data=new database();//建立database物件 data.add(new CD("起風了",3,false,"買辣椒也用券"));//新增ltem型別物件,新增ltem子類物件CD(匿名物件),CD構造器初始化,多型 data.add(new CD("流量", 3, false,"半陽")); data.add(new DVD("一出好戲", 125, false,"黃渤")); data.list(); } }
建立ltem類
package demo; public class ltem { private String title;//標題 private int playtime;//播放時間 private boolean borrow;//是佛外借 public ltem(String title, int playtime, boolean borrow) {//建構函式初始化變數 this.title = title; this.playtime = playtime; this.borrow = borrow; } public void print() {//print方法 輸出資料 System.out.print("標題:"+title+" 時間:"+playtime); } }
建立CD類
package demo; public class CD extends ltem{//子類CD繼承父類ltem private String artist;//藝術家 public CD(String title, int playtime, boolean borrow,String artist) {//建構函式初始化 super(title, playtime, borrow);//super關鍵字必須放在第一行,呼叫父類的建構函式,將標題,播放時間,是否外借傳入 this.artist=artist; } public void print() {//print方法重寫父類的print System.out.print("CD "); super.print();//super呼叫父類的print方法 System.out.print(" 藝術家:"+artist);//輸出子類獨有的屬性 System.out.println(); } }
建立DVD類
package demo;
public class DVD extends ltem{//子類DVD繼承父類ltem
private String director;//導演
public DVD(String title, int playtime, boolean borrow,String director) {//建構函式初始化
super(title, playtime, borrow);//super關鍵字必須放在第一行,呼叫父類的建構函式,將標題,播放時間,是否外借傳入
this.director=director;
}
public void print() {//print方法重寫父類的print
System.out.print("DVD ");
super.print();//super呼叫父類的print方法
System.out.print(" 導演:"+director);//輸出子類獨有的屬性
System.out.println();
}
}
執行結果: