Jetzt erstellen wir eine solche Medienbibliothek zum Speichern von CDs und DVDs. Sie können CDs und DVDs zur Medienbibliothek hinzufügen und alle CDs und DVDs in der Medienbibliothek auflisten.
Wir verwenden das Konzept der Vererbung: CD ist ein Objekt, ebenso wie DVD. Es gibt viele Ähnlichkeiten zwischen den beiden, wie z. B. Namen, Spielzeit, Kommentare usw. Um die Verwaltung und das Debuggen in Zukunft zu erleichtern, haben wir eine übergeordnete Klasse namens Item erstellt, die zwei Unterklassen hat: CD und DVD.
Dann müssen wir eine Klasse (Objekt) erstellen, um sie zu verwalten. Dieses Objekt verfügt über eine Mitgliedsvariable von ArrayList als Medienbibliothek, eine Add-Funktion zum Hinzufügen von CDs oder DVDs und eine Listenfunktion alles in der Mediathek. Wir nennen diese Klasse Datenbank.
Auf diese Weise müssen wir die folgenden vier Java-Quelldateien erstellen:
Quellcode:
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
Ausführen:
Hier gibt es zwei Konzepte:
Polymorphe Variablen: Man kann hier sagen, dass es zwei Unterklassen unter einer gibt übergeordnete Klasse, Zeile 9 in der Datenbank: Item item definiert ein Objektvariablenelement, bei dem es sich um die Item-Klasse handelt. Dieses Element ist nur eine Variable und der Manager eines Objekts, es gibt jedoch kein bestimmtes Objekt, das verwaltet werden muss. In der Hauptfunktion können Sie dem Element eine CD oder DVD zuweisen, sodass die Elementvariable nur dann wissen kann, welches Objekt sie verwalten möchte, je nachdem, wann das Programm ausgeführt wird. Dieses Element ist eine polymorphe Variable.
Aufwärtsmodellierung: Stellen Sie sich Aufwärtsmodellierung so vor, dass Sie einer Objektvariablen der übergeordneten Klasse ein Unterklassenobjekt zuweisen oder ein Unterklassenobjekt als Objekt der übergeordneten Klasse verwenden, wie db.add in der Datenbank eine CD oder DVD und übergeben Sie sie an die Objektvariable der Item-Klasse. Es ist immer sicher, nach oben zu stylen.
---------------- ------ -------------------------------------------- ------ ---------------------
Dann gibt es Polymorphismus:
Im Prozess der Datenbankausführung , in Zeile 15 gibt es den Satz item.print
Wir können sehen, dass dies die Druckfunktion in Item aufruft, aber wir können aus dem laufenden Programm erkennen, dass dies dazu führt Dies ist nicht der Fall. Die laufenden Ergebnisse zeigen, dass es offensichtlich das Ergebnis des Aufrufs von CD.print(); ist.
Item.print():
CD.print():
DVD. print():
Dies muss mithilfe von Polymorphismus erklärt werden: Erstens, wenn es Funktionen mit demselben Namen in der Unterklasse und der übergeordneten Klasse gibt, werden die Funktionen in der Unterklasse verwendet wird gehen Überschreiben Sie die von der übergeordneten Klasse geerbte Funktion mit demselben Namen, sodass die Funktion von der übergeordneten Klasse ausgeblendet wird und nicht funktioniert. Dann sieht das Element in Zeile 15 der Datenbank, ob es seine eigene Elementklasse oder seine Unterklasse verwaltet. Wenn es seine Unterklasse ist, verwendet die Druckfunktion die Druckfunktion seiner Unterklasse.