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

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

这些交通工具都具有一个共同属性 载客量: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(" ");
		}
	}

}

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

上一篇:正则表达式学习网址


下一篇:Rocket - build - vsim