ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

SCNU-Java作业-主题5:面向对象的基础:面向对象的特性 作业3:提高题-1-类的设计

2021-10-15 22:31:11  阅读:135  来源: 互联网

标签:Java void 作业 personCapacity 面向对象 generated println TODO public


某租赁公司 为了满足不同客户的需求,准备了 有以下几种交通工具,

这些交通工具都具有一个共同属性 载客量:personCapacity;
有两个共同的方法 显示载客量 : showCapacity();显示功能:showfunction()
它们能满足不同情况下的交通需求:
轿车 能 跑 (run),
飞机 能 跑(run) 也能飞(fly);
轮船 能 游 (swim)
水上飞机 能 飞(fly) 也能 游(swim)
水陆两用飞机 能 跑(run) 能 飞(fly) 也能游(swim)

请使编写程序,实现交通工具类,方便用户选择该交通工具时,能输出它的载客量和功能。

在测试类中 测试通过

编码码要求体现面向对象的编程思想:封装,继承和多态


学校作业,照着答案来模仿的,再自己慢慢理解

先建一个交通工具的总父类Vehicle

package theme5_3;

public abstract class Vehicle {
	private int personCapacity;
	public void showCapacity() {
		System.out.println("载客量:"+this.getPersonCapacity());
	}
	public abstract void say();//用于说出我是什么交通工具
	public abstract void showFunction();//展示功能,这种抽象的,每个子类都会有
	public Vehicle(int personCapacity)
	{
		this.personCapacity = personCapacity;
	}
	public int getPersonCapacity() {
		return personCapacity;
	}
	public void setPersonCapacity(int personCapacity) {
		this.personCapacity = personCapacity;
	}
}

建一个会跑的接口Run,为轿车的借口功能run做准备

package theme5_3;

public interface Run {
	public void run();//放一个空功能的借口,具体再另外实现
}

建轿车Car

package theme5_3;

public class Car extends Vehicle implements Run{//实施Run里面的功能

	public Car(int personCapacity) {
		super(personCapacity);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void showFunction() {
		// TODO Auto-generated method stub
		run();
	}
	 
	public void run() {
		 
		System.out.println("我能在路上跑,日行千里!");
	}

	@Override
	public void say() {
		// TODO Auto-generated method stub
		System.out.println("轿车:");
	}
}

轿车好了,做飞机,飞机有跑的功能,可以看出是轿车的子类,从轿车中继承下来就好了,再另外加个会飞的功能接口Fly,那这里先做接口Fly先

package theme5_3;

public interface Fly {
	public void fly();
}

然后飞机继承轿车,再加上这个Fly接口

package theme5_3;

public class Plane extends Car implements Fly {
//飞机能跑,可以直接继承Car类,然后加个Fly的接口,又能飞了
	
	public Plane(int personCapacity) {
		super(personCapacity);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("我能在天上飞!直插云霄!");
	}
	public void say() {
		System.out.println("飞机:");
	}
	public void showFunction() {
		run();
		fly();
	}
}

然后是轮船Ship,这里轮船会swim,那先做Swim的接口

package theme5_3;

public interface Swim {
	public void swim();
}

接着把轮船做好

package theme5_3;

public class Ship extends Vehicle implements Swim{

	public Ship(int personCapacity) {
		super(personCapacity);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void showFunction() {
		// TODO Auto-generated method stub
		swim();
	}
	public void say() {
		System.out.println("轮船:");
	}
	@Override
	public void swim() {
		// TODO Auto-generated method stub
		System.out.println("我能在水上游,浪里白条!");
	}

}

接着做水上飞机WaterPlane,能飞能游(不能跑),那我就直接继承轮船Ship,再给他加个飞的接口FLy就好了

package theme5_3;

public class WaterPlane extends Ship implements Fly {
//继承轮船swim的功能
	public WaterPlane(int personCapacity) {
		super(personCapacity);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void fly() {
		// TODO Auto-generated method stub
		System.out.println("我是水上飞机,还能飞!");
	}
	public void showFunction() {
		fly();
		swim();
	}
	public void say() {
		System.out.println("水上飞机:");
	}
}

接着做水陆两用飞机,能 跑(run) 能 飞(fly) 也能游(swim),直接从飞机上继承,加个会游的接口Swim就好了(或者继承水上飞机,加个Run接口)

package theme5_3;

public class WaterLandPlane extends Plane implements Swim {

	public WaterLandPlane(int personCapacity) {
		super(personCapacity);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void swim() {
		// TODO Auto-generated method stub
		System.out.println("水陆两用飞机,我还能游!");
	}
	public void showFunction() {
		super.showFunction();//这里可以直接继承前者的功能
		swim();
	}
	public void say() {
		System.out.println("水陆两用飞机:");
	}
}

最后是测试环节了

package theme5_3;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Vehicle[] v  = new Vehicle[5];//新建一个交通工具的数组,有五种交通工具
		//在分别定义他们的载客量,种类
		v[0] = new Car(5);//小车一般五座的
		v[1] = new Plane(300);// 
		v[2] = new Ship(400);
		v[3] = new WaterPlane(500);
		v[4] = new WaterLandPlane(1000);
		
		System.out.println("35号同学的Java作业,累死我了!照着答案抄都累,还要花很长时间去理解");
		for(Vehicle x:v)//x,选择的数字,v车型,即数组名
		{
			x.say();//说出我是什么交通工具
			x.showCapacity();//展示载客量
			x.showFunction();//展示有什么功能
			System.out.println(" ");
		}
	}

}

做完真的累,不过还有,有点成就感了,虽然说是模仿答案的,从模仿中学习,再理解。

标签:Java,void,作业,personCapacity,面向对象,generated,println,TODO,public
来源: https://blog.csdn.net/weixin_51262605/article/details/120791598

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有