• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Java基础学习

java 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

现在我们要做这么一个媒体库,用来存放CD和DVD。可以往媒体库里添加CD和DVD,还可以列出来媒体库里所有的CD和DVD。

我们用到了继承的概念:CD是一个对象,DVD也是。两者又有很多相似的地方,比方说都有名字,播放时间,评论,等等,为了以后便于管理和调试,我们做了一个父类叫Item,它下面有两个子类:CD,DVD。

然后我们还需要做一个类(对象)来管理它们,这个对象有一个ArrayList的成员变量当作媒体库,有一个add函数用来添加CD或DVD,还得有个list函数用来列出媒体库里的所有东西。我们给这个类起名Database。

这样我们就要做以下四个java源文件:

源码:

package dome;import java.util.ArrayList;public class Database {        private ArrayList listItem = new ArrayList();        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

运行:

这里有两个概念:

多态变量:在这里可以说是,一个父类下面有两个子类,在Database里第9行:Item item,定义了一个对象变量item,这个item是Item类,这个item还只是一个变量,是一个对象的管理者,但还没有具体要去管的那个对象。在main函数里可以去给item赋一个CD,也可以给他赋DVD,所以这个item变量是要根据程序运行的时候才能知道他要管理的那个对象是什么。这个item就是多态变量。

向上造型:想上造型是指拿一个子类的对象给父类的对象变量,或者说拿一本文来源gao@!dai!ma.com搞$$代^@码网*个子类的对象当父类的对象来用,如Database里db.add一样,我们可以拿一个CD或DVD给item这个Item类对象变量。向上造型总是安全的。

——————————————————————————————————————-

然后是多态:

在Database运行的过程中,第15行,有句item.print

我们可以看到这是在调用Item里的print函数,不过我们从程序运行结果来看仿佛不是这么回事,运行结果显示明明是调用CD.print();和DVD.print();的结果。

Item.print():

CD.print():

DVD.print():

这就要用多态去解释:首先当子类和父类里有相同名称的函数时,子类里的函数会去覆盖(override)从父类那里继承来的那个同名函数,于是从父类来的那个函数就会隐藏起来不起作用。然后Database第15行里的item会去看它管理的是什么它自己的Item类还是他的子类,如果是它的子类,那么这个print函数就会用它子类那里的print函数。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Java基础学习

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址