继承

此2段代码大量重复 

package doim;

import java.util.ArrayList;

public class CD extends Item{
	private String title;
	private String artist;
	private int numofTracks;
	private int playingtime;
	private boolean gotIt=false;
	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) {
		// TODO Auto-generated method stub

	}


	public void print() {
		// TODO Auto-generated method stub
		System.out.println("CD"+title+":"+artist);
	}

}
public class DVD extends Item{

	private String title;
	private String director;
	private int numofTracks;
	private int playingtime;
	private boolean gotIt=false;
	private String comment;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	public void print() {
		// TODO Auto-generated method stub
		System.out.println("DVD"+title+":"+director);
	}

	public DVD(String title, String director, int numofTracks, int playingtime, String comment) {
		super();
		this.title = title;
		this.director = director;
		this.numofTracks = numofTracks;
		this.playingtime = playingtime;
		this.comment = comment;
	}

}

我们可以写一个统领它们的类,方便使用

package doim;

public class Item {

	public Item() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	public void print() {
		// TODO Auto-generated method stub
		System.out.println("3333");
	}

}

上面那个类加上extends Item()便是继承者

主函数就可以简单化

import java.util.ArrayList;

public class Database {
	
	/*private ArrayList<CD> listCD=new ArrayList<CD>();
	private ArrayList<DVD> listDVD=new ArrayList<DVD>();*/
	private ArrayList<Item> listItem=new ArrayList<Item>();
	
	/*public void add(CD cd) {
		listCD.add(cd);
	}
	
	public void add(DVD cd) {
		listDVD.add(cd);
	}*/
	
	public void add(Item item) {
		listItem.add(item);
	}
	
	public void list() {
		/*for(CD cd:listCD) {
			cd.print();
		}
		for(DVD cd:listDVD) {
			cd.print();
		}*/
		for(Item item:listItem) {
			item.print();
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Database db=new Database();
		db.add(new CD("abc","ab",4,60,".."));
		db.add(new CD("abe","sd",3,23,"..."));
		db.add(new DVD("dsf","sf",3,23,"..."));
		db.list();
	}

}

注意点:

1:仍然可以插入CD,DVD类型

2:Item类里的print函数被CD和DVD里的替代了,没有执行 

 3:若CD类里没有print函数,就会用原来继承的

同时CD和DVD的代码还可以更加简化

public class Item {
	
	private String title;
	private int playingtime;
	private boolean gotIt=false;
	private String comment;

	public Item(String title, int playingtime, boolean gotIt, String comment) {
		super();
		this.title = title;
		this.playingtime = playingtime;
		this.gotIt = gotIt;
		this.comment = comment;
	}

	public Item() {
		// TODO Auto-generated constructor stub
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	public void print() {
		// TODO Auto-generated method stub
		System.out.println(title);
	}

}

通过super调用

public class DVD extends Item{

	private String director;
	
	public DVD(String title, String director, int playingtime, String comment) {
		super(title,playingtime,false,comment);
		this.director = director;
	}

	public void print() {
		// TODO Auto-generated method stub
		System.out.println("DVD:");
		super.print();
		System.out.println(director);
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
     DVD s =new DVD("ds","d",6,"ff");
     s.print();
	}

}

注意:print里的super调用,不然无法输出title,title在Item里面,可以在Item里面输出title,通过super.print可以调用 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值