起名Java基础学习小记–多态

想自杀

 1 package dome;
 2 
 3 public class CD extends Item {
 4 
 5     private String artist;
 6     private int numofTracks;
 7     
 8     public CD(String title, int playTime, boolean gotIt, String comment, String artist, int numofTracks) {
 9         super(title, playTime, gotIt, comment);
10         this.artist = artist;
11         this.numofTracks = numofTracks;
12     }
13     
14     public void print() {
15         System.out.print("CD:");
16         super.print();
17         System.out.println(":"+artist+":"+numofTracks);
18     }
19     
20 }

来自KlNG画师

起名 1

在评论

起名 2

来自KlNG画师

DVD.java

来自KlNG画师

修外话:总结了多年之学习心得,不得不说,睡眠是一个学习者的必需品!所谓“早于破坏一上”不是没有道理哪,特别针对Coders来说,有几天未是加班加点到夜间。好吧,我承认于初学Java的本人,昨日头脑顿路,Java的持续和多态,看得自是发生接触小懵逼。其实大致是知情了,不过到了切实可行采用中,特别是比较复杂的继续和调用关系之时节有些迷路。好了,话不多说,明日重把后续与多态来单总结,今日事先对多态来只小记。

深受他于名叫吧

起名 3

俺们好看看就是以调用Item里之print函数,不过我们从程序运行结果来拘禁类似不是这么回事,运行结果显示明明是调用CD.print();和DVD.print();的结果。

这边产生零星个概念:

Item.java

 

起名 4

源码:

Item.print():

起名 5

然后是多态:

 1 package dome;
 2 
 3 public class Item {
 4 
 5     private String title;
 6     private int playTime;
 7     private boolean gotIt = false;
 8     private String comment;
 9     
10     public Item(String title, int playTime, boolean gotIt, String comment) {
11         super();
12         this.title = title;
13         this.playTime = playTime;
14         this.gotIt = gotIt;
15         this.comment = comment;
16     }
17     
18     public void print() {
19         System.out.print(title+":"+playTime+":"+gotIt+":"+comment);
20     }
21     
22 }

DVD.print():

起名 6起名 7

CD.print():

 1 package dome;
 2 
 3 public class DVD extends Item {
 4     
 5     private String director;
 6 
 7     public DVD(String title, int playTime, boolean gotIt, String comment, String director) {
 8         super(title, playTime, gotIt, comment);
 9         this.director = director;
10     }
11     
12     public void print() {
13         System.out.print("DVD:");
14         super.print();
15         System.out.println(":"+director);
16     }
17     
18 }
 1 package dome;
 2 
 3 import java.util.ArrayList;
 4 
 5 public class Database {
 6     
 7     private ArrayList<Item> listItem = new ArrayList<Item>();
 8     
 9     public void add(Item item) {
10         listItem.add(item);
11     }
12     
13     public void list() {
14         for(Item item:listItem) {
15             item.print();
16         }
17     }
18     
19     public static void main(String[] args) {
20         Database db = new Database();
21         db.add(new CD("黑梦",600,true,"Classic Album","窦唯",10));
22         db.add(new DVD("功夫",900,false,"Let's do this!","周星驰"));
23         db.add(new CD("Wall",700,false,"Psychedelic Rock","PinkFloyd",15));
24         db.list();
25     }
26     
27 }

起名 8

多态变量:在这边可以说是,一个父类下面有点儿独子类,在Database里第9推行:Item
item,定义了一个目标变量item,这个item是Item类,这个item还仅是一个变量,是一个对象的官员,但还从未切实可行而去管的非常目标。在main函数里可去为item赋一个CD,也得让他赋DVD,所以这item变量是设因程序运行的时段才会分晓他使保管的万分目标是啊。这个item就是多态变量。

咱俩用到了继往开来的概念:CD是一个对象,DVD也是。两者又起众多貌似之地方,比方说还有名字,播放时间,评论,等等,为了以后便于管理和调节,我们开了一个父类叫Item,它下面有点儿单子类:CD,DVD。

腾飞造型:想达到形象是依靠用一个子类的靶子吃父类的靶子变量,或者说拿一个子类的对象当父类的目标来为此,如Database里db.add一样,我们可以以一个CD或DVD给item这个Item类对象变量。向上造型总是安全的。

接下来我们尚需开一个接近(对象)来治本它们,这个目标来一个ArrayList的成员变量当作媒体库,有一个add函数用来上加CD或DVD,还得有只list函数用来排有媒体库里的拥有东西。我们叫此近乎起名Database。

Database.java

以Database运行的长河中,第15实施,有句item.print

起名 9起名 10

起名 11起名 12

诸如此类咱们不怕假设举行以下四单java源文件:

 


起名 13起名 14

起名 15

顿时将用几近态去解释:首先当子类和父类里发生同名称的函数时,子类里之函数会去覆盖(override)于父类那里继承来之生同名函数,于是由父类来的深函数就会躲起来不起作用。然后Database第15行里的item会去看它管理之是啊它好之Item类还是他的子类,如果是其的子类,那么这个print函数就见面因此它子类那里的print函数。

CD.java

运行:

兹我们如果开这么一个传媒库,用来存放在CD和DVD。可以往媒体库里添加CD和DVD,还得排下媒体库里所有的CD和DVD。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图