現(xiàn)在我們要做這么一個媒體庫,用來存放CD和DVD??梢酝襟w庫里添加CD和DVD,還可以列出來媒體庫里所有的CD和DVD。
我們用到了繼承的概念:CD是一個對象,DVD也是。兩者又有很多相似的地方,比方說都有名字,播放時間,評論,等等,為了以后便于管理和調(diào)試,我們做了一個父類叫Item,它下面有兩個子類:CD,DVD。
然后我們還需要做一個類(對象)來管理它們,這個對象有一個ArrayList的成員變量當(dāng)作媒體庫,有一個add函數(shù)用來添加CD或DVD,還得有個list函數(shù)用來列出媒體庫里的所有東西。我們給這個類起名Database。
這樣我們就要做以下四個java源文件:
源碼:
package dome; import java.util.ArrayList; public class Database { private ArrayList<Item> listItem = new ArrayList<Item>(); public void add(Item item) { listItem.add(item); } public void list() { for(Item item:listItem) { item.print(); } } public static void main(String[] args) { Database db = new Database(); db.add(new CD("黑夢",600,true,"Classic Album","竇唯",10)); db.add(new DVD("功夫",900,false,"Let's do this!","周星馳")); db.add(new CD("Wall",700,false,"Psychedelic Rock","PinkFloyd",15)); db.list(); } } Database.java
package dome; public class Item { private String title; private int playTime; private boolean gotIt = false; private String comment; public Item(String title, int playTime, boolean gotIt, String comment) { super(); this.title = title; this.playTime = playTime; this.gotIt = gotIt; this.comment = comment; } public void print() { System.out.print(title+":"+playTime+":"+gotIt+":"+comment); } } Item.java
package dome; public class CD extends Item { private String artist; private int numofTracks; public CD(String title, int playTime, boolean gotIt, String comment, String artist, int numofTracks) { super(title, playTime, gotIt, comment); this.artist = artist; this.numofTracks = numofTracks; } public void print() { System.out.print("CD:"); super.print(); System.out.println(":"+artist+":"+numofTracks); } } CD.java
package dome; public class DVD extends Item { private String director; public DVD(String title, int playTime, boolean gotIt, String comment, String director) { super(title, playTime, gotIt, comment); this.director = director; } public void print() { System.out.print("DVD:"); super.print(); System.out.println(":"+director); } } DVD.java
運行:
這里有兩個概念:
多態(tài)變量:在這里可以說是,一個父類下面有兩個子類,在Database里第9行:Item item,定義了一個對象變量item,這個item是Item類,這個item還只是一個變量,是一個對象的管理者,但還沒有具體要去管的那個對象。在main函數(shù)里可以去給item賦一個CD,也可以給他賦DVD,所以這個item變量是要根據(jù)程序運行的時候才能知道他要管理的那個對象是什么。這個item就是多態(tài)變量。
向上造型:想上造型是指拿一個子類的對象給父類的對象變量,或者說拿一個子類的對象當(dāng)父類的對象來用,如Database里db.add一樣,我們可以拿一個CD或DVD給item這個Item類對象變量。向上造型總是安全的。
-------------------------------------------------------------------------------------------------------------------
然后是多態(tài):
在Database運行的過程中,第15行,有句item.print
我們可以看到這是在調(diào)用Item里的print函數(shù),不過我們從程序運行結(jié)果來看仿佛不是這么回事,運行結(jié)果顯示明明是調(diào)用CD.print();和DVD.print();的結(jié)果。
Item.print():
CD.print():
DVD.print():
這就要用多態(tài)去解釋:首先當(dāng)子類和父類里有相同名稱的函數(shù)時,子類里的函數(shù)會去覆蓋(override)從父類那里繼承來的那個同名函數(shù),于是從父類來的那個函數(shù)就會隱藏起來不起作用。然后Database第15行里的item會去看它管理的是什么它自己的Item類還是他的子類,如果是它的子類,那么這個print函數(shù)就會用它子類那里的print函數(shù)。

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
