Java之继承与多态,类型结构

学习翁凯老师的课程之后

这是一个媒体资料库,里面存放着CD,DVD,GAME,都是Item的子类,而Game又派生出Videogame和Boardgame两个子类,如下是代码。

CD类:

public class CD extends Item {
	private int numOftrack;
	private  String artist;
	
	
	
	public CD(String title, String artist, int playingtime, String comment,int numOftrack) {//CD的构造器
		super(title,  playingtime,false, comment);//传给父类Item去初始化
		this.numOftrack=numOftrack;
		this.artist=artist;
	}
	
	
	
	@Override
	public String toString() {//构造自己的toString函数;
		return "CD [numOftrack=" + numOftrack + ", artist=" + artist + "]";
	}

	


	@Override
	public boolean equals(Object obj) {//构造cd自己的equals函数,判断两个对象值是否相等;
		// TODO Auto-generated method stub
		CD cc=(CD)obj;//向下造型,把Object当成CD类型看;
		return artist.equals(cc.artist);
	}



	public void print()
	{
		System.out.print("CD:");
		super.print();
		System.out.println(artist);
	}
	



	public static void main(String[] args) {
		 CD cd=new CD("ddd","lujiahui",6,"...",9);
		 CD cd1=new CD("ddd","lujiahui",6,"...",9);
		 System.out.println(cd.equals(cd1));//判断cd和cd1的内容是否相等;
		 cd.print();
		 System.out.println(cd);

	}

}

DVD类:

public class CD extends Item {
	private int numOftrack;
	private  String artist;
	
	
	
	public CD(String title, String artist, int playingtime, String comment,int numOftrack) {//CD的构造器
		super(title,  playingtime,false, comment);//传给父类Item去初始化
		this.numOftrack=numOftrack;
		this.artist=artist;
	}
	
	
	
	@Override
	public String toString() {//构造自己的toString函数;
		return "CD [numOftrack=" + numOftrack + ", artist=" + artist + "]";
	}

	


	@Override
	public boolean equals(Object obj) {//构造cd自己的equals函数,判断两个对象值是否相等;
		// TODO Auto-generated method stub
		CD cc=(CD)obj;//向下造型,把Object当成CD类型看;
		return artist.equals(cc.artist);
	}



	public void print()
	{
		System.out.print("CD:");
		super.print();
		System.out.println(artist);
	}
	



	public static void main(String[] args) {
		 CD cd=new CD("ddd","lujiahui",6,"...",9);
		 CD cd1=new CD("ddd","lujiahui",6,"...",9);
		 System.out.println(cd.equals(cd1));//判断cd和cd1的内容是否相等;
		 cd.print();
		 System.out.println(cd);

	}

}

Item类:

public class CD extends Item {
	private int numOftrack;
	private  String artist;
	
	
	
	public CD(String title, String artist, int playingtime, String comment,int numOftrack) {//CD的构造器
		super(title,  playingtime,false, comment);//传给父类Item去初始化
		this.numOftrack=numOftrack;
		this.artist=artist;
	}
	
	
	
	@Override
	public String toString() {//构造自己的toString函数;
		return "CD [numOftrack=" + numOftrack + ", artist=" + artist + "]";
	}

	


	@Override
	public boolean equals(Object obj) {//构造cd自己的equals函数,判断两个对象值是否相等;
		// TODO Auto-generated method stub
		CD cc=(CD)obj;//向下造型,把Object当成CD类型看;
		return artist.equals(cc.artist);
	}



	public void print()
	{
		System.out.print("CD:");
		super.print();
		System.out.println(artist);
	}
	



	public static void main(String[] args) {
		 CD cd=new CD("ddd","lujiahui",6,"...",9);
		 CD cd1=new CD("ddd","lujiahui",6,"...",9);
		 System.out.println(cd.equals(cd1));//判断cd和cd1的内容是否相等;
		 cd.print();
		 System.out.println(cd);

	}

}

Game类:

public class CD extends Item {
	private int numOftrack;
	private  String artist;
	
	
	
	public CD(String title, String artist, int playingtime, String comment,int numOftrack) {//CD的构造器
		super(title,  playingtime,false, comment);//传给父类Item去初始化
		this.numOftrack=numOftrack;
		this.artist=artist;
	}
	
	
	
	@Override
	public String toString() {//构造自己的toString函数;
		return "CD [numOftrack=" + numOftrack + ", artist=" + artist + "]";
	}

	


	@Override
	public boolean equals(Object obj) {//构造cd自己的equals函数,判断两个对象值是否相等;
		// TODO Auto-generated method stub
		CD cc=(CD)obj;//向下造型,把Object当成CD类型看;
		return artist.equals(cc.artist);
	}



	public void print()
	{
		System.out.print("CD:");
		super.print();
		System.out.println(artist);
	}
	



	public static void main(String[] args) {
		 CD cd=new CD("ddd","lujiahui",6,"...",9);
		 CD cd1=new CD("ddd","lujiahui",6,"...",9);
		 System.out.println(cd.equals(cd1));//判断cd和cd1的内容是否相等;
		 cd.print();
		 System.out.println(cd);

	}

}


Videogame类:

public class Videogame extends Game {
    private String platform;
        
        
	public Videogame(String title, int playingtime, String comment, int Player,String platform) {
			super(title, playingtime, false, comment, Player);
			this.platform=platform;
			// TODO Auto-generated constructor stub
		}

	
	

	@Override
	public void print() {
		System.out.print("Videogame:");
		System.out.println(platform);
		// TODO Auto-generated method stub
		super.print();
	}




	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Videogame vd=new Videogame("dddf",6,",,,",2,"lol");
        vd.print();
	}

}

Boardgame 类:

public class Boardgame extends Game {
    
	private int boardtime;
	
	
	public Boardgame(String title, int playingtime, String comment, int Player,int boardtime) {
		super(title, playingtime, false, comment, Player);
		this.boardtime=boardtime;
		// TODO Auto-generated constructor stub
	}
	
	


	@Override
	public void print() {
		System.out.println("Boardgame:");
		System.out.println(boardtime);
		// TODO Auto-generated method stub
		super.print();
	}




	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Boardgame bd=new Boardgame("lll",9,";;;",6,3);
        bd.print();
	}

}



Database类:

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();
			System.out.println();
		}
	}
	public static void main(String[] args) {//具有可扩展性;
		Database db=new Database ();
		db.add(new CD("ddd","luiahui",6,"...",9));
		db.add(new CD("ddj","lujiaui",6,"...",9));
		db.add(new DVD("dd","lujahui",6,"..."));
		db.add(new Videogame("ddf",6,",,,",2,"lol"));
		db.list();

	}

}
运行结果:
CD:ddd
6
luiahui

CD:ddj
6
lujiaui

DVD:dd
6
lujahui

Videogame:lol
2
ddf
6



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱技术的小小林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值