1. 程式人生 > >Java繼承和多型實現例子

Java繼承和多型實現例子

繼承,多型的簡單例子

我們想做一個類用於存放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();
	}
	

}

執行結果: 在這裡插入圖片描述