이제 CD와 DVD를 보관할 수 있는 미디어 라이브러리를 만들어 보겠습니다. 미디어 라이브러리에 CD 및 DVD를 추가하고 미디어 라이브러리의 모든 CD 및 DVD를 나열할 수 있습니다.
우리는 상속 개념을 사용합니다. CD는 객체이고 DVD도 객체입니다. 두 클래스는 이름, 재생 시간, 설명 등 많은 유사점을 가지고 있습니다. 향후 관리 및 디버깅을 용이하게 하기 위해 CD와 DVD라는 두 개의 하위 클래스가 있는 Item이라는 상위 클래스를 만들었습니다.
그런 다음 이를 관리하기 위한 클래스(객체)를 만들어야 합니다. 이 객체에는 미디어 라이브러리인 ArrayList의 멤버 변수와 CD 또는 DVD를 추가하는 추가 기능 및 목록 기능이 있습니다. 미디어 라이브러리의 모든 것. 이 클래스의 이름을 데이터베이스로 지정합니다.
이런 방식으로 다음 4개의 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
실행:
여기에는 두 가지 개념이 있습니다.
다형성 변수: 여기서는 하나 아래에 두 개의 하위 클래스가 있다고 말할 수 있습니다. parent class, 데이터베이스의 9행: Item 항목은 항목 클래스인 개체 변수 항목을 정의합니다. 이 항목은 단지 변수이고 개체의 관리자이지만 관리할 특정 개체는 없습니다. 주요 기능에서는 항목에 CD나 DVD를 할당할 수 있으므로 항목 변수는 프로그램이 실행되는 시기에 따라 관리하려는 개체만 알 수 있습니다. 이 항목은 다형성 변수입니다.
상향 모델링: 상향 모델링을 상위 클래스의 객체 변수에 하위 클래스의 객체를 제공하거나 Database의 db.add와 같이 하위 클래스 객체를 상위 클래스의 객체로 사용하는 것으로 생각하면 됩니다. CD나 DVD를 가져와서 Item 클래스 객체 변수에 줄 수 있습니다. 위쪽으로 스타일을 지정하는 것이 항상 안전합니다.
------------------------------- ------ ------------------ ------ --------
그리고 다형성이 있습니다:
데이터베이스가 실행되는 과정에서 , 15번째 줄에 Sentence item.print
가 있습니다. 이는 Item에서 인쇄 기능을 호출하는 것을 알 수 있지만 프로그램 실행 결과를 보면 다음과 같습니다. 그렇지 않습니다. 실행 결과는 분명히 CD.print() 및 DVD.print();를 호출한 결과입니다.
Item.print():
CD.print():
DVD. print():
이것은 다형성을 사용하여 설명해야 합니다. 먼저 하위 클래스와 상위 클래스에 동일한 이름을 가진 함수가 있는 경우 하위 클래스의 함수는 상위 클래스에서 상속된 동일한 이름으로 함수를 재정의하므로 상위 클래스의 함수가 숨겨지고 작동하지 않습니다. 그런 다음 데이터베이스의 15번째 줄에 있는 항목은 자신의 Item 클래스를 관리하는지 아니면 하위 클래스를 관리하는지 확인합니다. 하위 클래스인 경우 인쇄 기능은 해당 하위 클래스의 인쇄 기능을 사용합니다.