栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

4.1 继承----媒体资料库的设计

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

4.1 继承----媒体资料库的设计

比如我们现在想制作一个CD

CD


title

artist

numofTracks

playingTime

gotIt

comment

首先创建一个类

import java.util.ArrayList;

public class Database{

        private  ArrayList   listCD  =  new  ArrayList();

}


这时候我们用了CD,需要定义一个CD的类


public class      CD{

        public static void main(String[] args){

                

        }

}

接下来,

在CD里面定义属性

public class      CD{

       

                private String title;

                private String artist;

                private int  numofTracks;

                private int playingTime;

                private boolean gotIt;

                private String comment;

        

}


再来个构造器

public class      CD{

     

                private String title;

                private String artist;

                private int  numofTracks;

                private int playingTime;

                private boolean gotIt;

                private String comment;

        

        public CD(String title,String artist, int numofTracks, int playingTime,String comment){

           //     super();

                this.title = title;

                this.artist = artist;

                this.numofTracks = numofTracks;

                this.playingTime = playingTime;

                this.comment = comment;

        }

                 public static void main(String[] args){

                 }

}

当然,接下来就是输入输出了,我们在定义的Database 里面,定义成员函数,输入,输出

import java.util.ArrayList;

public class Database{

        private  ArrayList   listCD  =  new  ArrayList();

        public void add(CD cd){

                listCD.add (cd);

        }

        public void list(){

                for( CD cd : listCD){

                        cd.print();

                }

        }

}


这里的参数  CD cd  ,CD 是构造的参数类型,cd是对象

此时,我们输出,是调用了CD,所以CD类里面需要有print的成员函数

public void print(){

        System.out.println(title+":"+artist);

}

然后我们到主函数里面去创建对象调用CD,添加函数

public static void main(String[] args){

        Database db = new Database();

        db.add(new CD("abc","abc", 4, 60));  //这时候添加的参数是CD构造器里面的参数,我                                                                    //      们要进行赋值使用的}

然后输出我们需要的东西,就是

db.list();

输出: abc:abc

这很简单,我们只是把之前的记事本改了一下,以前放的是元素,现在放的是对象,只不过是放参数的时候因为容器里是对象,所以对象需要传入具体数据的话需要创建对象的对象。

对象名.add(  new  对象类型(创建对象时构造器里面的内容———对成员初始化之后,调用的构造函数));


db.add(new CD("abc","abc", 4, 60)); 

第二步:如果我们需要往容器里面再加入一个元素,就是DVD,

那我们接着在Database 里面创建一个,

private ArrayLIist  listCD  =  new  ArrayList();

private ArrayLIist  listDVD  =  new  ArrayList();

当然我们创建了一个容器,容器里是对象是DVD,所以我们要创建一个DVD

public  class DVD{

}

其实DVD和CD蛮像的,所以借用CD,然后做些许修改

           

public  class DVD{

                private String title;

                private String director;

                private int  playingTime;

                private boolean gotIt = false;

                private String comment;

}

这时候如果想要给DVD里面添加数据,就要在调用他的类的成员函数里面创建函数

public void add(DVD dvd){

        listDVD.add(dvd);

}


至于调用的是DVD还是CD,会根据函数的重载,看传入的参数的类型,我们是自定义类型

对于列出容器里面的东西

public void list(){

        for(CD cd : listCD){

                cd.print();

        }

        for(DVD dvd : listDVD){

              dvd.print();

        }

}


这个  dvd是for-each 循环。这个listDVD 是存储DVD对象的容器名,对于我们存在listDVD里面的对象,我们需要为它们创建对象,所以我们在传入参数的时候需要new ,来完成对象初始化。

当然,DVD还没有print,需要在 DVD类里面成员变量创建一个DVD,和CD类似,

public void print(){

        System.out.println(title +":"+director );

}


这个时候我们在Database 类主函数里面创建对象来对DVD和CD赋值,

public static void main(String[]  args){

        Database   db  =   new  Database();

        db.add(new  CD("abc","abc",4,60, "..."));     

        db.add(new  DVD("c","c",60, "..."));    

        db.list();

}


我们会发现DVD报错

此时,我们想把创建的DVD对象传入到容器里面,但是new一个DVD的时候,需要对DVD对象的成员变量赋值,但是DVD成员变量都是private,所以需要调用DVD里面的构造函数,来创建构造器完成初始化,

构造函数:和成员变量一样,只不过是和类名一致,new对象的时候在完成成员变量初始化之后,会被调用。我们用到this


在DVD类里,构造器

        public DVD(String title,String director, int playingTime,String comment){

           //     super();

                this.title = title;

                this.artist = director;

                this.playingTime = playingTime;

                this.comment = comment;

        }

然后就可以了,对于输出容器里面的对象的话,是我们在调用成员函数的所完成的,修改的话,就是在DVD和CD类的成员函数里面修改,调用的话就是在Database里面,创建成员函数,然后利用for - each 循环,将容器里面的值依次赋予自定义变量

        for(DVD dvd : listDVD){

              dvd.print();  //DVD类型的引用类型,可以直接调用自己的属性

        }


DVD是容器  listDVD  里面的对象的类型,也就是我们创建的DVD这个类,相当于容器里对象的属性;

print输出的是容器里的对象,对象输出需要在DVD里面再建立一个成员变量输出。

讨论:

这个媒体资料库有什么问题?

答: 代码复制赘余,修改工程量大,拓展性差.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号