【java 抽象类】实训--丰水期电费与枯水期电费的计价

本文通过Java编程,详细描述了一个实训题目,涉及抽象类的使用,创建了ElectricityCharge抽象类,以及其子类ElectricityChargeLackRain(枯水期)和ElectricityChargeOfRain(丰水期)的实现,展示了如何根据不同条件计算电费。最终,通过Test.java测试类验证整个项目功能。
摘要由CSDN通过智能技术生成

目录

 一、实训题目及分析

题目

分析

二、java项目架构

三、整体代码展示

1.ElectricityCharge.java 父类;抽象类

2.ElectricityChargeLackRain.java (枯水期电费计算)子类;继承抽象父类

3.ElectricityChargOfRain.java  (丰水期电费计算)子类;继承抽象父类

4.Test.java  测试类;测试整个java项目的运行

四、结果截图

​编辑

五、总结


        前言:文章内容通过使用Java语言,完成实训案例--丰水期电费与枯水期电费的计价来更深入了解Java语言中的抽象类。在本案例中运用到类的继承【extends】以及有参构造等方法实现。文章开头放置实训题目以及个人对题目的分析,先展示java项目架构,然后以 类 分开讲解代码,最后做出对【Java 抽象类】的总结。


 一、实训题目及分析

题目

丰水期电费与枯水期电费的计价方式不同,丰水期电费每度为
2.25元,如用电量超200度,则超出部分打9折;枯水期电费每
度为3. 5元,如用电量超150度,则超出部分多收10%。
请设计
一个抽象类(ElectricityCharge) ,并设计丰水期电费类
(ElectricityChargeOfRain)和枯水期电费类
(ElectricityChargeLackRain)继承该抽象类,实现电费的计算。

计算丰水期用电量为300度的电费,计算枯水期用电量为230度
的电费。

 

分析

题目简述了丰水期电费与枯水期电费的计价方式的不同,导致我们在判断计算二者的电费时,判断标准的不同所以我们需要两个类,通过提示设计一个父类及抽象类(ElectricityCharge)用来统筹规范化的它下面的两个子类--丰水期电费类(ElectricityChargeOfRain)枯水期电费类(ElectricityChargeLackRain),最后通过一个测试类(Test)来对以上三个代码之间的抽象继承关系进行整体测试。


二、java项目架构

  • ElectricityCharge.java--父类;抽象类;用于放置成员变量、构造方法。(优先编写)
  • ElectricityChargeLackRain.java--子类;继承父类;用于编写父类里的抽象类
  • ElectricityChargOfRain.java--子类;继承父类;用于编写父类里的抽象类
  • Test.java--测试类;用于最后测试整个java项目的运行。(最后编写)

注:后面的编写顺序仅是作者编写习惯,读者可以按照自己的编写习惯进行编写。


三、整体代码展示

1.ElectricityCharge.java 父类;抽象类

变量:electricity

抽象方法:exceed()    注:抽象方法:只有方法的声明,没有任何代码的实现。用abstract
修饰符进行声明。

构造方法:有参构造方法

package electricitycharge;

public abstract class ElectricityCharge {//注意定义为“abstract”的抽象类
	protected int electricity;//定义“电量”,供测试类输入具体数字传入子类判断和计算电费具体结果
	public abstract double exceed();//定义出抽象方法,供后面的子类进行更进一步编写
	public ElectricityCharge(int electricity){//定义有参构造方法
		this.electricity = electricity;
	}
}

2.ElectricityChargeLackRain.java (枯水期电费计算)子类;继承抽象父类

继承变量:electricity

需重写抽象方法:exceed() 

因继承父类,无需再编写构造方法

package electricitycharge;

public class ElectricityChargeLackRain extends ElectricityCharge{//通过extend继承父类ElectricityCharge

	public ElectricityChargeLackRain(int electricity) {
		super(electricity);//继承父类的electricity,切记要用super(),通过this.是会报错的。
	}
	public double exceed(){//重写父类遗留下来家产(划掉)抽象类。
		if (electricity > 150) {//根据题目中对与枯水期电费的具体数学要求进行if函数判断计算
			return 3.5 * 150 +(electricity - 150) * 1.1; 
		} else {
			return 3.5 * electricity;
		}
	}
}

3.ElectricityChargOfRain.java  (丰水期电费计算)子类;继承抽象父类

继承变量:electricity

需重写抽象方法:exceed()

因继承父类,无需再编写构造方法

package electricitycharge;

public class ElectricityChargeOfRain extends ElectricityCharge{//同上extend继承父类ElectricityCharge

	public ElectricityChargeOfRain(int electricity) {
		super(electricity);
	}

	public double exceed() {//重新编写父类的抽象方法
		if (electricity > 200) {//分析计算丰水期电费
			return 2.25 * 200 + (electricity - 200) * 2.25 * 0.9;
		}else {
			return 2.25 * electricity;
		}
	}
	

}

4.Test.java  测试类;测试整个java项目的运行

定义 有参:e1   测试计算枯水期电费

定义 有参:e2   测试计算丰水期电费

package electricitycharge;

public class Test {

	public static void main(String[] args) {
		ElectricityCharge e1 = new ElectricityChargeOfRain(300);//枯水期
		System.out.println("枯水期费用:"+e1.exceed());
		
		ElectricityCharge e2 = new ElectricityChargeLackRain(230);//丰水期
		System.out.println("丰水期费用:"+e2.exceed());
	}

}

四、结果截图


五、总结

  • 抽象类中可以包含有一般方法,也可以包含有抽象方法。 
  • 抽象类只能作为基类,它本身不能实例化。 
  • 如果抽象类的子类不能实现所有的抽象方法,那么子类也必须定义
  • 为抽象类。即抽象类派生的非抽象子类,必须实现所有抽象方法。

而且在抽象类中抽象方法只有方法的声明,没有任何代码的实现。

抽象方法定义格式
[访问修饰符] abstract 返回类型  方法名([参数列表]);←没有大括号,
以;结束
方法定义格式
[访问修饰符] 返回类型 方法名([参数列表]) {  
       
方法体 

  • 52
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值