当前位置:   article > 正文

[Java实验 4] 接口_java 接口 实验

java 接口 实验

一、实验题目

1、实验目的

  1. 掌握类的继承关系和派生方法。
  2. 掌握多态的概念与使用。
  3. 掌握面向对象程序设计的特性,包括类的继承、方法的重载和覆盖,抽象类和方法、接口等。

2、实验环境

  1. 硬件环境:个人 PC 机
  2. 软件环境:windows 操作系统+JDK1.8 或以上+Eclipse 或 Idea

3、实验内容

题目 1.

  1. 定义接口 AreaInterface,该接口有一个双精度浮点型的常量 PI,它的值等于 Math.PI;含 有一个求面积的方法 double area()。
  2. 定义一个 Rectangle(长方形)实现 AreaInterface 接口,该类有两个 private 访问权限的双 精度浮点型变量 x(长)和 y(宽);定义一个 public 访问权限的构造方法,用来给类变量赋 值;实现 area()方法得到长方形的面积;定义 toString()方法,返回一段字符串信息,内容如 下格式:“该长方形面积为:”+面积。
  3. 定义一个 TestArea 类,在它的 main()方法中;创建一个 Rectangle 的实例,长为 10.0,宽 为 20.0,输出它的面积。

题目 2.

  1. 定义接口 Shape,其中包括 area 方法。类 Circle、Square 和 Triangle 均实现了接口 Shape。 定义主函数,创建元素个数为 3 的 Shape 类型的一维数组,分别为数组元素创建 Circle、Square 和 Triangle 类型的对象,最后分别调用各数组元素的 area 方法,输出相关信息。

二、实验操作

前言

  1. 为了克服Java单继承的缺点,Java使用了接口
  2. 接口可以用来描述一种抽象。
  3. 接口可以用来实现解耦。

1.接口的概念

接口在java中是一种类似于抽象方法的集合

2.接口的特点

  • 它的形式和类很像,但是类主要是去描述对象的属性和方法,而接口则包含类要实现的方法
  • 实现接口的类必须要定义接口里的所有方法,除非它是抽象类
  • 接口是无法被实例化的,但是一个类实现了某一个接口,就可以调用接口里的方法。
  • 接口可以继承多个接口。
  • 接口中的方法都是共有的。
  • 接口和接口中的方法都是隐式抽象的,声明时不必使用abstract关键字。
  • 举个例子,比如求面积的这个能力就可以被定义成一个接口,因为每个图形的面积不一样,求法也不一样,可以通过各种图形类来实现求面积这个能力。

3.实验代码一

建立一个AreaInterface接口,定义功能为求图形面积

3.1、定义AreaInterface接口

  1. public interface AreaInterface {
  2. double PI = Math.PI;
  3. double area();
  4. }

建立长方形类,定义他的长和宽,并求出面积

3.2、定义Recangle类实现接口

  1. public class Rectangle implements AreaInterface{
  2. // 长方形的长x
  3. private double x;
  4. // 长方形的宽y
  5. private double y;
  6. public Rectangle(double x, double y) {
  7. this.x = x;
  8. this.y = y;
  9. }
  10. public Rectangle() {
  11. }
  12. @Override
  13. public String toString() {
  14. return "该长方形面积为:" + area();
  15. }
  16. @Override
  17. public double area() {
  18. return x*y;
  19. }
  20. }

这里要注意,重写接口声明的方法时:

  • 不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
  • 要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。

实现接口时,也要注意:

  • 一个类只能继承一个类,但是能实现多个接口
  • 接口能继承另一个接口。并且能多继承。

再运用主类测试,看看接口方法是否被调用

3.3、定义TestArea类

  1. public class TestArea {
  2. public static void main(String[] args) {
  3. Rectangle rectangle = new Rectangle(10.0,20.0);
  4. System.out.println(rectangle.toString());
  5. }
  6. }

结果如下:

4.实验代码二

根据题目要求,建立了Shape接口

  1. public interface Shape {
  2. public double area();
  3. }

同样,分别建立Circle,Square,Traingle类

4.1、Circle类

  1. public class Circle implements Shape{
  2. private double r;
  3. public Circle(double r) {
  4. this.r = r;
  5. }
  6. public Circle() {
  7. }
  8. @Override
  9. public double area() {
  10. return Math.PI * r * r;
  11. }
  12. @Override
  13. public String toString() {
  14. return "圆的面积为" + area();
  15. }
  16. }

 4.2、Square类

  1. public class Square implements Shape{
  2. // 定义正方形的边长x
  3. double x;
  4. public Square(double x) {
  5. this.x = x;
  6. }
  7. @Override
  8. public double area() {
  9. return x * x;
  10. }
  11. public Square() {
  12. }
  13. @Override
  14. public String toString() {
  15. return "正方形的面积为" + area();
  16. }
  17. }

 4.3、Triangle类

  1. public class Triangle implements Shape{
  2. private double a ,b ,c;
  3. private double p;
  4. @Override
  5. public double area() {
  6. return Math.sqrt(p*(p-a)*(p-b)*(p-c));
  7. // 海伦公式求三角形面积
  8. }
  9. public Triangle(double a, double b, double c) {
  10. this.a = a;
  11. this.b = b;
  12. this.c = c;
  13. p = (a+b+c)/2;
  14. }
  15. public Triangle() {
  16. }
  17. @Override
  18. public String toString() {
  19. return "三角形的面积为" + area();
  20. }
  21. }

4.4、TestArea类(修改)

  1. import java.util.concurrent.TransferQueue;
  2. public class TestArea {
  3. public static void main(String[] args) {
  4. System.out.println("------[题目1]------");
  5. Rectangle rectangle = new Rectangle(10.0,20.0);
  6. System.out.println(rectangle.toString());
  7. System.out.println("------[题目2]------");
  8. Circle circle = new Circle(4.0);
  9. System.out.println(circle.toString());
  10. Square square = new Square(3.0);
  11. System.out.println(square.toString());
  12. Triangle triangle = new Triangle(3,4,5);
  13. System.out.println(triangle.toString());
  14. }
  15. }

结果如下

 


 

三、实验总结 

  • 理解抽象类和接口的联系和区别
  • 掌握接口的继承与实现
  • 进一步体会复杂系统中如何设计和使用抽象类和接口。

 完成了以上三点,并且多注意在实现接口时的一些事项。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/392834
推荐阅读
相关标签
  

闽ICP备14008679号