Java编程基础

打印机

编码创建一个打印机类Printer,定义抽象方法print(),创建两个子类,即针式打印机类DotMatrixPrinter和喷墨打印机类InkpetPrinter,并在各自类中重写print(),编写测试类实现两种打印机打印。再添加一个激光打印机子类LaserPrinter,重写方法print(),修改测试类实现该打印机打印。
提示:利用向上转型,将子类对象赋给父类Printer的引用变量。
这里主要是训练,类的继承,子类对父类方法的重写,以及多态的实例解释

//定一个打印机类
public abstract class Printer {
	public abstract void  daying() ;
}
```//个体的实例化(其他几个实例代码一样,就是名字不同,就不多赘述)
public class DotMatrixPrinter extends Printer{
	public void daying() {//对父类daying方法的重写
		System.out.println("针式打印器");		
	}
}

public class PrinterText {

public static void main(String[] args) {
	Printer p1 = new DotMatrixPrinter();// 创建父类的引用P1指向子类DotMatrixPrinter的一个对象
	PrinterText.show(p1);
	Printer p2 = new InkpetPrinter();
	PrinterText.show(p2);
	Printer p3 = new LaserPrinter();
	PrinterText.show(p3);
}

public static void show(Printer printer) {
	printer.daying();// 创建一个方法 输入一个父类类型的形参 printer,然后用printer调用父类的打印方法
}

}

租车付租金

进入界面,选择租期----》挑选轿车还是客车----》挑选车的类型----》显示金额,以及是否继续租车,最终得到总的租金。

//父类
import java.util.Scanner;
public abstract class Che {
	// 属性
	private int leix;//private 设置属性私有,防止其他类的方法随意访问(只能通过本类的setter设置数值,getter得到数值)
	private int days;
	private int pai;
	private int money;
	// 构造
	// 方法
	Scanner input = new Scanner(System.in);
//车牌是每个车共有的特点,所以放在父类中,提高代码效率,也方便扩展。
	public void chepai() {
		pai = (int) (Math.random() * 100000);
		System.out.print("车牌号是:苏A" + pai);
	}
//这里设置一个抽象方法,给子类重写,于此对应的,本类需要声明成为抽象类
	public abstract void zu();

	public int getDays() {//调用次方法,得到本类的属性days的数值
		return days;
	}

	public void setDays(int days) {//调用次方法,设置本类的属性days的数值
		this.days = days;
	}

	public int getMoney() {
		return money;
	}

	public void setMoney(int money) {
		this.money = money;
	}

	public int getLeix() {
		return leix;
	}

	public void setLeix(int leix) {
		this.leix = leix;
	}

}

//实例轿车类
public class JiaoChe extends Che {
int xinghao;

public void zu() {
	System.out.print("选择型号:(1.别克2.宝马):");
	xinghao = input.nextInt();
	switch (xinghao) {
	case 1:
		setMoney(getMoney() + getDays() * 100);//调用父类中的相关方法,进行设置以及取值
		break;
	case 2:
		setMoney(getMoney() + getDays() * 200);
		break;

	default:
		break;
	}

}

}
//实例客车类
public class KeChe extends Che {
int sit;

public void zu() {
	System.out.print("选择型号:(1.大于16座2.小于16座):");
	sit = input.nextInt();
	switch (sit) {
	case 1:
		setMoney(getMoney() + getDays() * 300);
		break;
	case 2:
		setMoney(getMoney() + getDays() * 400);
		break;

	default:
		break;
	}

}

}
//租车测试类
import java.util.Scanner;

public class Chetext {

public static void main(String[] args) {
	int sum = 0;
	Che che = new JiaoChe();
	Che ka = new KeChe();
	boolean a = true;
	Scanner input = new Scanner(System.in);
	do {
		System.out.print("输入租期:");
		che.setDays(input.nextInt());
		System.out.print("选择车的类型(1.轿车2.卡车):");
		che.setLeix(input.nextInt());
		switch (che.getLeix()) {
		case 1:
			che.zu();
			break;
		case 2:
			ka.zu();
			break;

		default:
			break;
		}
		sum = sum + che.getMoney();
		che.chepai();
		System.out.println("需要的价格是:" + che.getMoney());
		System.out.print("是否继续租赁:(1.是的 2.不要)");
		if (input.nextInt() == 2) {
			a = false;
		}

	} while (a);
	System.out.println("总的价格是:" + sum);
}

}

效果如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值