java学习1:有接口的类的对象创建+main传参+

本文介绍了如何为研究所编写一个通用的Java程序,通过接口Common定义速度计算逻辑,以Car007和Plane为例,实现在添加新交通工具时无需修改原有代码。程序利用接口和反射机制,确保了灵活性和扩展性。
摘要由CSDN通过智能技术生成

例、为某研究所编写一个通用程序,用来计算每一种交通工具行驶1000公里所需的时间。已知每种交通工具的参数都是3个整数A、B、C的表达式,现有两种工具Car007和Plane,其中Car007的速度计算公式为A*B/C,Plane的速度计算公式为A+B+C。需要编写三个类程序ComputeTime.java、Plane.java、Car007.java和一个接口程序Common.java,要求在未来如果增加第三种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序。其运行过程如下,从命令行输入ComputeTime的四个参数,第一个是交通工具的类型,第二、三、四个参数分别是整数A、B、C,例如,计算Plane的时间“java ComputeTime Plane 20 30 40”,计算Car007的时间“java ComputeTime Car007 23 34 45”,如果第三种交通工具为Ship,则只需要编写Ship.java,运行时输入“java ComputeTime Ship 22 33 44”。提示:充分利用接口的概念,接口对象作为参数。实例化一个对象的另外一种办法是“Class.forName(str).newInstance()”,例如需要实例化一个Plane对象的话,则只需调用Class.forName(“Plane”).newInstance()。 

main传参方法,空格间隔,都在args[]里

主类

import trafficway.*;
public class ComputeTime {

	public ComputeTime() {
		// TODO Auto-generated constructor stub
	}
	public static void main(String []args) {
		
		if(args.length!=6) {
			System.out.println("wrong");return;}//一定要有错误处理
		String vehicleType=args[2];
		int a=Integer.parseInt(args[3]);
		int b=Integer.parseInt(args[4]);
		int c=Integer.parseInt(args[5]);
		
		Common vehicle;
		if(vehicleType.equals("Plane")) {
			vehicle=new Plane(a,b,c);
			
		}else if(vehicleType.equals("Car007")) {
		   vehicle=new Car007(a,b,c);
			//Class.forName("Car007").newInstance();
		}
		else {
			System.out.println("Invalid vehicle type");
			return;//一定要有,否则可能有未初始化错误
		}
		double speed=vehicle.getSpeed();
		double time=1000/speed;
		System.out.println("Time needed to run 1000km for this "+args[2]+" in speed:"+speed+" : "+time+"hours");
		}
	
		
	}

接口类 Common

package trafficway;

public interface Common {
	double getSpeed();

}
package trafficway;

public class Car007 implements Common {
	private
	int A;
	int B;
	int C;

	public Car007(int a,int b,int c) {
		// TODO Auto-generated constructor stub
		this.A=a;
		this.B=b;
		this.C=c;
	}
	
	@Override//重载一定要加
	public double getSpeed(){
		return A*B/C;
	}
	

}
package trafficway;

public class Plane implements Common{

	private
	int A;
	int B;
	int C;

	public Plane(int a,int b,int c) {
		// TODO Auto-generated constructor stub
		this.A=a;
		this.B=b;
		this.C=c;
	}
	@Override
	public double getSpeed(){
		return A+B+C;
	}
	
}

 运行结果

 参考https://wenku.csdn.net/answer/26a784f313fc407bb498b5c8146ea590,感谢

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值