Java继承和多态实现例子

继承,多态的简单例子

我们想做一个类用于存放CD,DVD等光碟,要应用多态和继承,去除重复性代码,便于以后维护(添加新的格式光碟,如:MP3,MP4),因此我们首先创建一个工程demo,创建database类用于存放光碟数据,创建光碟类ltem,创建CD类,创建DVD类,CD和DVD共同继承ltem的属性和方法(CD、DVD都是光碟),减少重复的属性编写,也便于database类的Listltem容器维护(只需维护光碟类即可)。

通过这个例子我们更好的熟悉Java中的继承和多态特性。

Java继承和多态实现例子_第1张图片

创建database类

package demo;

import java.util.ArrayList;

public class database {
	ArrayList listltem=new ArrayList();//创建ArrayList容器,存储类型为ltem
	
	public void add(ltem item) {//add方法,传入ltem类型,
		listltem.add(item);//添加进入listltem容器中
	}
	
	public void list() {//list方法 负责遍历容器中所有数据
		for(ltem item:listltem) {
			item.print();
		}
	}

	public static void main(String[] args) {
		database data=new database();//创建database对象
		data.add(new CD("起风了",3,false,"买辣椒也用券"));//添加ltem类型对象,添加ltem子类对象CD(匿名对象),CD构造器初始化,多态
		data.add(new CD("流量", 3, false,"半阳"));
		data.add(new DVD("一出好戏", 125, false,"黄渤"));
		data.list();
	}

}

创建ltem类

package demo;

public class ltem {
	private String title;//标题
	private int playtime;//播放时间
	private boolean borrow;//是佛外借 

	public ltem(String title, int playtime, boolean borrow) {//构造函数初始化变量
		this.title = title;
		this.playtime = playtime;
		this.borrow = borrow;
	}

	public void print() {//print方法 输出数据
		System.out.print("标题:"+title+" 时间:"+playtime);
		
	}
	
}

创建CD类

package demo;

public class CD extends ltem{//子类CD继承父类ltem
	private String artist;//艺术家

	public CD(String title, int playtime, boolean borrow,String artist) {//构造函数初始化
		super(title, playtime, borrow);//super关键字必须放在第一行,调用父类的构造函数,将标题,播放时间,是否外借传入
		this.artist=artist;
	}
	

	public void print() {//print方法重写父类的print 
		System.out.print("CD ");
		super.print();//super调用父类的print方法
		System.out.print(" 艺术家:"+artist);//输出子类独有的属性
		System.out.println();
	}

}

创建DVD类

package demo;

public class DVD extends ltem{//子类DVD继承父类ltem
	private String director;//导演

	public DVD(String title, int playtime, boolean borrow,String director) {//构造函数初始化
		super(title, playtime, borrow);//super关键字必须放在第一行,调用父类的构造函数,将标题,播放时间,是否外借传入
		this.director=director;
	}
	
	public void print() {//print方法重写父类的print 
		System.out.print("DVD ");
		super.print();//super调用父类的print方法
		System.out.print(" 导演:"+director);//输出子类独有的属性
		System.out.println();
	}
	

}

运行结果:
Java继承和多态实现例子_第2张图片

你可能感兴趣的:(Java)