JAVA——接口与实现

实验题目:

        卡车要装载一批货物,货物有3种商品:电视、冰箱和洗衣机。需要计算出大货车和小货车各自所装载的3种货物的总重量。编写一个Java应用程序:

(1)要求有一个ComputeWeight接口,该接口中有一个方法:public double computeWeight();

(2)有3个实现该接口的类:Television、Refrigerator和WashMachine。这3个类通过实现接口ComputeWeight给出自重。

(3)有一个Truck类,该类用ComputeWeight接口类型的数组作为成员,那么该数组的元素就可以存放Television对象的引用、Refrigerator对象的引用或WashMachine对象的引用。

(4)程序能输出Truck对象所装载的货物的总重量。

(5)控制台效果如下所示

 实验目的:

  1. 了解并且会使用上转型对象。
  2. 学会定义一个接口,并以此为父类接口,派生出三个子类。
  3. 熟悉数组的操作,将获取到的内容储存在里面。
  4. 学会使用方法重写,理解方法覆盖。
  5. 学会this关键字的使用。     

实验环境:

eclipse的版本: Mars.2 Release (4.5.2)

电脑系统:Windows 11

JDK版本:1.8.0_261

实验步骤:

1.创建ComputeWeight接口。

2.在该接口中定义一个计算重量的方法computeWeight(),并且在这个接口中创建一个public double computeWeight()方法。

3.分别创建Television、Refrigerator和WashMachine类,这三个类实现ComputeWeight接口例如WashMachine类:它有一个double类型的成员变量washMachineweight,表示洗衣机的重量。构造函数WashMachine(double w)用于初始化洗衣机的重量。重写public double computeWeight()这个方法,computeWeight()方ComputeWeight接口中的抽象方法,该方法返回洗衣机的重量washMachineweight并且可以计算洗衣机的重量。另外两个类和这个差不多一样照搬下来。

4.创建Truck类,接收一个ComputeWeight类型的数组作为参数,并将其赋值给类内部的goods数组

5.在Truck类中,定义一个货物的总重量,并且初始化这个量为0,在主函数中创建Truck对象先创建了一个长度为3的ComputeWeight类型的数组goods可以使用上转型对象(upcasting)将一个子类的对象赋值给父类类型的变量或引用,这里的ComputeWeight就是Television类的父接口。因此,可以将Television类的对象上转型为ComputeWeight类型,然后存储到ComputeWeight类型的数组goods中的第一个元素goods[0]中

6.调用计算货物总重量的方法,并输出结果。

实验源代码(带注释):

ComputeWeight.java 代码如下:

public interface ComputeWeight {

public double computeWeight();

}

Television.java 代码如下:

public class Television implements ComputeWeight  {

//定义一个double类型的成员变量televisionweight,表示电视机的重量.

double televisionweight;

//构造函数Television(double televisionweight)用于初始化电视机的重量

Television(double televisionweight){

this.televisionweight= televisionweight;

}

//重写public double computeWeight()这个方法,该方法返回洗衣机的重量televisionweight,并且可以计算电视机的重量。

@Override

public double computeWeight() {

// TODO Auto-generated method stub

return televisionweight;

}

}

WashMachine.java代码如下:

public class WashMachine implements ComputeWeight {

//定义一个double类型的成员变量washMachineweight,表示洗衣机的重量.

double washMachineweight;

//构造函数WashMachine(double washMachineweight)用于初始化洗衣机的重量

WashMachine(double washMachineweight){

this.washMachineweight= washMachineweight;

}

//重写public double computeWeight()这个方法,该方法返回洗衣机的重量washMachineweight,并且可以计算洗衣机的重量。

@Override

public double computeWeight() {

// TODO Auto-generated method stub

return wweight;

}

}

Refrigerator.java代码如下:

public class Refrigerator implements ComputeWeight{

//定义一个double类型的成员变量refrigeratorweight,表示电冰箱的重量。

double refrigeratorweight;

//构造函数Refrigerator(double refrigeratorweight)用于初始化电冰箱的重量。

Refrigerator(double refrigeratorweight){

this.refrigeratorweight= refrigeratorweight;

}

//重写public double computeWeight()这个方法,该方法返回洗衣机的重量refrigeratorweight,并且可以计算电冰箱的重量。

@Override

public double computeWeight() {

// TODO Auto-generated method stub

return rweight;

}

}

Truck.java代码如下:

public class Truck {

ComputeWeight[] goods;

//接收一个ComputeWeight类型的数组作为参数,并将其赋值给类内部的goods数组。

Truck(ComputeWeight[] goods){

this.goods = goods;

}

public static void main(String[] args) {

//先创建了一个长度为3的ComputeWeight类型的数组goods,可以使用上转型对象(upcasting)将一个子类的对象赋值给父类类型的变量或引用,这里ComputeWeight就是Television类的父接口。因此,可以将Television类的对象上转型为ComputeWeight类型,然后存储到ComputeWeight类型的数组goods中的第一个元素goods[0]中。

ComputeWeight[] goods = new ComputeWeight[3];

goods[0] = new Television(10);

goods[1] = new WashMachine(20);

goods[2] = new Refrigerator(30);

//在创建一个Truck类的对象truck,并将goods数组传递给Truck类的构造函数.通过实例化Truck类得到一个名为truck的对象,这个对象的goods属性被初始化为刚才创建的数组goods。

//new关键字会调用Truck类的构造函数来创建一个Truck对象,并将其赋值给变量truck。

Truck truck = new Truck(goods);

       //设置初始的重量为0。

double totalweight = 0;

totalweight =goods[0].computeWeight()+goods[1].computeWeight()+goods[2].computeWeight();

System.out.println("所装货物总重量为:"+totalweight);

}

}

实验小结:

要计算总重量时,如何将这三个数据相加?

        这个问题的解决是和室友一起探讨的,可以设置一个长度为3的数组goods,然后将上转型对象调用子类的方法,并且传参,把冰箱,电视机,洗衣机的重量传进来,然后给储存到数组元素中,接着创建一个Truck类的对象truck将goods数组传递给Truck类的构造函数最后通过调用三个不同物品对象的computeWeight()方法得到的重量之和

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包与接口实验报告 实验 包与接口 【实验目的】 1. 了解Java 中包(package)、接口(interface)的作用。 2. 掌握包、接口设计方法。 【实验要求】 1. 了解Java 系统包的结构。 2. 掌握创建自定义包的方法。 3. 掌握使用系统接口的技术和创建自定义接口的方法。 【实验步骤】 一.了解并使用Java 的系统包 1. API 包、接口、异常处理的作用 包是类和接口的集合。利用包可以把常用的类或功能相似的类放在一个包中。Java 语言提供系统包,其中包含了大量的类,可以在编写Java 程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称类库或API 包,所谓API(Application Program Interface)即应用程序接口。API 包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API 包都以“java.”开头,以区别用户创建的包。 常见Java系统包及其作用: 1)语言包(java.lang):提供的支持包括字符串处理、多线程处理、异常处理、数学函数处理等,可以用它简单地实现Java程序的运行平台。 2)实用程序包(java.util):提供的支持包括哈希表、堆栈、可变数组、时间和日期等。 输入输出包(java.io):用统一的流模型来实现所有格式的I/O,包括文件系统、网络、输入。 3)网络包(java.net):支持Internet的TCP/IP协议,用于实现Socket编程;提供了与Internet的接口,支持URL连接,WWW的即时访问,并且简化了用户/服务器模型的程序设计。 4)抽象图形用户接口包(javax.swing):实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动条、对话框等,使得 Java可以移植到不同的平台。 接口解决了Java 不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值