2021-06-15

《Java面向对象》

第三章 继承与多态——实例运用及知识点总结
多态:多种形态。
重载:一个类中具有相同的方法,但这些方法的参数类型和个数不同。
重写:子类包含父类同名的方法。
super:父类的构造方法。
Java中的继承为单继承,即一个子类只能有一个直接的父亲。
多态在编译时,可以通过父类的引用指向子类对象,而在运行时,则通过父类所指向的子类对象,调用子类中重写父类的方法。

注意:构造方法不能被继承!!!
下面是练习列题:
一、要求如下:
①创建database类,它相当于仓库,用于存放CD、DVD等光碟;
②CD、DVD等光碟类都具有相同的属性(标题title,播放时间playtime,是否外借isBrrow),在构造函数中初始化,以及方法print(输出三个属性);
③对于CD类,还需要添加独有的属性:艺术家artist,并且需要通过方法print输出,因此这里需要重写父类方法
④DVD类需要添加独有属性:导演director,并且需要通过方法print输出,因此这里需要重写父类方法
⑤最后将创建的CD、DVD对象存入database对象中,并打印database仓库中所有的光碟。
效果图如下所示:
在这里插入图片描述
下面是实现代码:
代码一

package 继承与多态;

public class Database {
private String title;
private int playtime;
private String isBrrow;
public Database(String title,int playtime){
	this.title=title;
	this.playtime=playtime;
}
public void print(){
	System.out.println("标题:"+this.title+",播放时间:"+this.playtime);
}
public String getTitle() {
	return title;
}
public void setTitle(String title) {
	this.title = title;
}
public int getPlaytime() {
	return playtime;
}
public void setPlaytime(int playtime) {
	this.playtime = playtime;
}
public String getIsBrrow() {
	return isBrrow;
}
public void setIsBrrow(String isBrrow) {
	this.isBrrow = isBrrow;}
	}

代码二:

package 继承与多态;

public class CD extends Database{

	public CD(String title, int playtime) {
		super(title, playtime);
		
	}
	String artist="买辣椒也用券";
	public void print(){
		System.out.println("标题:"+super.getTitle()+",播放时间:"+super.getPlaytime()+"艺术家:"+artist);
	}

}

代码三:

package 继承与多态;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Database c1=new CD("起风了", 3);
        c1.print();
        DVD d1=new DVD("一出好戏", 125);		
        d1.print();
        
	}

}

代码四:

package 继承与多态;

public class DVD extends Database{

	public DVD(String title, int playtime) {
		super(title, playtime);
		
	}
	String director="黄渤";
	public void print(){
		System.out.println("标题:"+super.getTitle()+",播放时间:"+super.getPlaytime()+"艺术家:"+director);
	}
	

}

二、按要求编写一个Java应用程序:
(1)定义一个类,描述一个矩形Rectangle,包含有长、宽两种属性和计算面积方法getArea()。
(2)编写一个类Rectangular,继承自矩形类,同时该类描述长方体,具有长、宽、高属性和计算体积的方法。
(3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。
实现代码如下:
代码一:

package com.chapter;

public class Rectangle {
//	(1)定义一个类,描述一个矩形Rectangle,包含有长、宽两种属性和计算面积方法getArea()。
//	(2)编写一个类Rectangular,继承自矩形类,同时该类描述长方体,具有长、宽、高属性和计算体积的方法。
//	(3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、宽、高,输出其底面积和体积。

package com.chapter;

public class Rectangle {
	 double longth;
	double width;
	public Rectangle(double longth,double width){
		this.longth=longth;
		this.width=width;
	}

	public double getArea(){
		return longth*width;
	}
	public void getArea1(){
		System.out.println("底面积:"+getArea());
	}
	}

代码二:

package com.chapter;

public class Rectangular extends Rectangle{
	double height;
	public Rectangular(double longth,double width,double height){
		super(longth,width);
		this.height=height;
	}
	public void  getTiJi(){
		double res=this.getArea();
		System.out.println(res*this.height);
	}
}

代码三:

package com.chapter;

public class Test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
     Rectangle R1=new Rectangle(3,4);
     R1.getArea1();
     Rectangular r2=new Rectangular(3,4,5);
     r2.getTiJi();
        
	}

}

注:代码若存在错误或有别的编写方法,感谢指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值