如何用Java测试抽象类和接口?

1、定义一个代表“形状”的抽象类,其中包括求形状面积的抽象方法。继承该抽象类定义三角型、矩形、圆。分别创建一个三角形、矩形、圆存入一个数组中,访问数组元素将各类图形的面积输出。

在这里插入图片描述

public class Test1 {
  public static void main(String[] args) {//主方法
  Triangle s1=new Triangle(30, 40, 50);//创建三角形对象
  Rectangle s2=new Rectangle(10,20);//创建矩形对象
  Circle s3=new Circle(15);//创建圆形对象
  Shape arr[]={s1,s2,s3};//创建形状对象数组
  for(int i=0;i<arr.length;i++)//遍历
  arr[i].area();//调用方法
  }
  }
  abstract class Shape{//形状的抽象类
  abstract void area();//定义抽象方法
  }
  class Triangle extends Shape{//三角形的类,继承抽象类
  double a;//定义成员变量,三条边
  double b;
  double c;
  public Triangle(double a,double b,double c){//定义构造函数,分别给三条边赋值
  this.a=a;
  this.b=b;
  this.c=c;
  }
  public void area(){//计算面积
  double p = (a + b +c) / 2;//海伦公式
  double s=Math.sqrt(p * (p - a) * (p- b) * (p- c));
  System.out.println("三角形的面积为:"+s);//打印
  }
  }
  class Rectangle extends Shape{//矩形的类,继承抽象类
  double width;//定义成员变量,高和宽
  double height;
  public Rectangle(double width, double height) {//定义构造函数,分别给高和宽赋值
        this.width = width; 
        this.height = height;
  }
  public void area(){//计算面积
  double s=width*height;
  System.out.println("矩形的面积为:"+s);//打印
  }
  }
  class Circle extends Shape{//圆的类,继承抽象类
  double r;//定义成员变量,半径r
  public Circle(double r){//定义构造函数,给半径赋值
  this.r=r;
  }
  public void area(){//计算面积
  double s=Math.PI*r*r;
  System.out.println("圆的面积为:"+s);//打印
  }
  }

2、定义一个代表“形状”接口,其中包括求形状面积的抽象方法。

· 定义三角型、矩形、圆实现该接口。

· 分别创建一个三角形、矩形、圆存入一个数组中,

· 访问数组元素将各类图形的面积输出。

public class Test2 {
  public static void main(String[] args) {//主方法
  Triangle1 s1=new Triangle1(20, 30, 40);//创建三角形对象
  Rectangle1 s2=new Rectangle1(20,50);//创建矩形对象
  Circle1 s3=new Circle1(50);//创建圆形对象
  Shape1 arr[]={s1,s2,s3};//创建形状对象数组
  for(int i=0;i<arr.length;i++)//遍历
  arr[i].area();//调用方法
  }
  }
  /*
  因为与第一题所创建的类名一样,会报错,所以在类名和接口的名字后面加了一个1.
  */
  interface Shape1{//形状的接口
  void area();//定义方法
  }
  class Triangle1 implements Shape1{//创建三角形的类,继承接口
  double a;//定义成员变量,三角形的三条边
  double b;
  double c;
  public Triangle1 (double a,double b,double c){//定义构造函数,分别给三条边赋值
  this.a=a;
  this.b=b;
  this.c=c;
  }
  public void area(){//计算面积
  double p = (a + b +c) / 2;//海伦公式
  double s=Math.sqrt(p * (p - a) * (p- b) * (p- c));
  System.out.println("三角形的面积为:"+s);//打印
  }
  }
  class Rectangle1 implements Shape1{//创建矩形的类,继承接口
  double width;//定义成员变量,高和宽
  double height;
  public Rectangle1 (double width, double height) {//定义构造函数,分别给高和宽赋值
        this.width = width; 
        this.height = height;
  }
  public void area(){//计算面积
  double s=width*height;
  System.out.println("矩形的面积为:"+s);//打印
  }
  }
  class Circle1 implements Shape1{//创建园的类,继承接口
  double r;//定义成员变量,半径
  public Circle1 (double r){//定义构造函数,给半径赋值
  this.r=r;
  }
  public void area(){//计算面积
  double s=Math.PI*r*r;
  System.out.println("圆的面积为:"+s);//打印
  }
  }

3、定义一个抽象类-水果,其中包括getWeight()方法,编写程序分别创建苹果、桃子、橘子三个类,创建若干水果对象存放在一个水果类型的数组中,输出数组中所有水果的类型、重量。提示:利用对象的getClass().getName()方法可获取对象的所属类的名称。

public class Test3 {
  public static void main(String[] args) {//主方法
  Apple s1=new Apple(10);//创建苹果的对象
  Peach s2=new Peach(20);//创建桃子的对象
  Orange s3=new Orange(30);//创建橘子的对象
  Fruits arr[] ={s1,s2,s3};//创建水果对象数组
  for(int i=0;i<arr.length;i++){//遍历
  System.out.print(arr[i].getClass().getName()+",重量为:"+arr[i].getWeight());
  //打印类名和水果重量
  System.out.println();//换行
  }
  }
  }
  abstract class Fruits {//创建水果抽象类
  abstract double getWeight();//定义方法
  }
  class Apple extends Fruits {//创建苹果类,继承水果
  double weight;//定义成员变量,重量
  public Apple (double weight){//定义构造函数,给重量赋值
  this.weight=weight;
  }
  public double getWeight() {//获取重量的方法
  return weight;//返回重量
  }
  }
  class Peach extends Fruits {//创建桃子类,继承水果
  double weight;//定义成员变量,重量
  public Peach (double weight){//定义构造函数,给重量赋值
  this.weight=weight;
  }
  public double getWeight() {//获取重量的方法
  return weight;//返回重量
  }
  }
  class Orange extends Fruits {//创建橘子类,继承水果
  double weight;//定义成员变量,重量
  public Orange (double weight){//定义构造函数,给重量赋值
  this.weight=weight;
  }
  public double getWeight() {//获取重量的方法
  return weight;//返回重量
  }
  }

最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!

在这里插入图片描述

这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。

点击文末小卡片领取

敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。

自学推荐B站视频:

零基础转行软件测试:25天从零基础转行到入职软件测试岗,今天学完,明天就业。【包括功能/接口/自动化/python自动化测试/性能/测试开发】

自动化测试进阶:2022B站首推超详细python自动化软件测试实战教程,备战金三银四跳槽季,进阶学完暴涨20K

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值