前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java面向对象程序设计实验报告(实验四 抽象类的练习)

Java面向对象程序设计实验报告(实验四 抽象类的练习)

作者头像
命运之光
发布2024-03-20 10:31:44
2140
发布2024-03-20 10:31:44
举报

作者:命运之光 专栏:Java面向对象程序设计实验报告

实验四 抽象类的练习 实验环境:Eclipse+JDK 实验目的:

  1. 掌握并理解面向对象的编程思想;
  2. 熟练掌握类和对象的定义及使用;
  3. 掌握抽象类的概念,特点及其使用。

实验内容: 1、编写一个程序,设计一个汽车抽象类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。 (1)每个类都有构造方法进行属性初始化; (2)抽象类Vehicle类具有输出相关数据信息的抽象方法; (3)Car,Truck子类覆写抽象类的抽象方法,并给子类分别添加一个子类特有的方法(内容自定); (4)使用Test类中的main方法实例化Car,Truck,并输出相关信息(分别练习向上转型和向下转型)。 2、定义Shape抽象类,包含私有属性color,创建构造器为color赋值;包含计算周长的方法celPerimeter();定义子类Triangle,包含三边;定义子类Circle,包含半径radius;子类分别实现父类的计算周长功能。


以下是实验报告内容

✨✨前言:由于五一假期导致最后一节Java上机实验课没有上,所以不是很清楚实验报告的具体要求,我就按照之前数据结构实验报告的格式写了这次的Java上级报告,有需要的还是直接复制粘贴就行了,不过这次我写的比较敷衍,自己要上交实验报告的话,最好还是稍微修改美化一下🦄。

✨一、需求设计

编写一个程序,设计一个汽车抽象类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。

(1)每个类都有构造方法进行属性初始化;

(2)抽象类Vehicle类具有输出相关数据信息的抽象方法;

(3)Car,Truck子类覆写抽象类的抽象方法,并给子类分别添加一个子类特有的方法(内容自定);

(4)使用Test类中的main方法实例化Car,Truck,并输出相关信息(分别练习向上转型和向下转型)。

定义Shape抽象类,包含私有属性color,创建构造器为color赋值;包含计算周长的方法celPerimeter();定义子类Triangle,包含三边;定义子类Circle,包含半径radius;子类分别实现父类的计算周长功能。

✨二、概要设计

本实验设计了七个类,一个测试类demo4,一个汽车抽象类Vehicle,包含的属性有车轮个数wheels和车重weight,一个小车类Car是Vehicle的子类,其中包含的属性有载人数loader,一个卡车类Truck是Car类的子类,其中包含的属性有载重量payload。一个Shape抽象类包含私有属性color,创建构造器为color赋值;包含计算周长的方法celPerimeter();定义子类Triangle,包含三边;定义子类Circle,包含半径radius;子类分别实现父类的计算周长功能。

三、详细设计

新建一个class类类名为Vehicle,包含的属性有车轮个数wheels和车重weight。

代码语言:javascript
复制
public int wheels;//车轮个数
public double weight;//车重

写入空参和全参方法

代码语言:javascript
复制
Vehicle(){}//空参构造
Vehicle(int wheels,double weight)//全参构造
{
    this.wheels=wheels;
    this.weight=weight;
}

最后定义输出相关信息

代码语言:javascript
复制
public abstract String put();//输出相关信息

新建一个class类类名为Car是Vehicle的子类,其中包含的属性有载人数loader

代码语言:javascript
复制
public int loader;

构造Car类的无参有参两参构造。

代码语言:javascript
复制
Car(){}
Car(int loader,int wheels,double weight)
{
    super(wheels,weight);
    this.loader=loader;
}

重写put方法

代码语言:javascript
复制
public String put()
{
    System.out.println("小车车轮数为:"+wheels+";小车车重为:"+weight+"载人数为:"+loader+"人");
    return "小车车轮数为:"+wheels+";小车车重为:"+weight+"载人数为:"+loader+"人";
}

定义汽车的特有方法

代码语言:javascript
复制
public void cardemo()
{
    System.out.println("汽车的特有方法");
}

新建一个class类Truck是Car类的子类,其中包含的属性有载重量payload

代码语言:javascript
复制
public double payload;

写入空参和全参方法

代码语言:javascript
复制
Truck(){}
Truck(double payload)
{
    super();
    this.payload=payload;
}
Truck(double payload,int wheels,double weight)
{
    super(wheels,weight);
    this.payload=payload;
}

重写put方法

代码语言:javascript
复制
public String put()
{
    System.out.println("卡车车轮数为:"+wheels+";卡车车重为:"+weight+"卡车载重为:"+payload+"千克");
    return "卡车车轮数为:"+wheels+";卡车车重为:"+weight+"卡车载重为:"+payload+"千克";
}

新建一个class类Shape抽象类包含私有属性color,创建构造器为color赋值;

代码语言:javascript
复制
private String color;

无参有参构造

代码语言:javascript
复制
Shape(){}
Shape(String color)
{
    this.color=color;
}

setter,getter重写为color赋值。

代码语言:javascript
复制
public String setColor(String color)
{
    this.color=color;
    return this.color;
}
public String getColor()
{
    return this.color;
}

计算周长的方法。

代码语言:javascript
复制
public abstract double celPerimeter();

创建一个class类类名为Triangle是Shape的子类,三边为私有属性。

代码语言:javascript
复制
private double a;
private double b;
private double c;

无参有参构造

代码语言:javascript
复制
Circle(){}
Circle(double radius,String color)
{
    super(color);
    this.radius=radius;
}

重写celPerimeter方法

代码语言:javascript
复制
public double celPerimeter()
{
    return 2*radius*3.14;
}

创建一个class类类名为Circle是Shape的子类,私有属性为半径。

代码语言:javascript
复制
private double radius;

无参有参构造

代码语言:javascript
复制
Circle(){}
Circle(double radius,String color)
{
    super(color);
    this.radius=radius;
}

重写celPerimeter方法

代码语言:javascript
复制
public double celPerimeter()
{
    return 2*radius*3.14;
}

四、调试结果

输入第一题的测试样例为:

小车车轮数为:3;小车车重为:4.0载人数为:800人

卡车车轮数为:6;卡车车重为:1500.0卡车载重为:2000.0千克

汽车的特有方法

小车车轮数为:3;小车车重为:4.0载人数为:1000人

测试结果如图所示:

输入第二题的测试样例为:

三角形三边为6,7,8颜色为红色,圆形的半径为3颜色为蓝色。

测试结果如图所示:

五、测试结果

依照实验要求输入第一题样例为:

小车车轮数为:4;小车车重为:5.0载人数为:1000人

卡车车轮数为:8;卡车车重为:2000.0卡车载重为:2500.0千克

汽车的特有方法

小车车轮数为:4;小车车重为:5.0载人数为:1000人

测试结果如图所示:

依照实验要求输入第二题样例,三角形三边为3,4,5颜色为红色,圆形的半径为4颜色为蓝色。

测试结果如图所示:

附录:源程序代码(带注释)

demo4类
代码语言:javascript
复制
package 命运之光;
public class demo4 {
    public static void main(String[] args)
    {
        System.out.println("----------第一题-------------");
        Car c=new Car(1000,4,5);
        Vehicle v =new Car(1000,4,5);//向上转型
        Vehicle v11 =new Truck(2500,8,2000);
        Truck t=new Truck(2500,8,2000);
        c.put();
        t.put();
        Car v1 =(Car) v ;//向下转型
        v1.cardemo();
        v.put();
        System.out.println("----------第二题-------------");
        Triangle T=new Triangle(3,4,5,"红色");
        Circle C=new Circle(4,"蓝色");
        System.out.println("三角形周长为:"+T.celPerimeter()+"颜色为:"+T.getColor());
        System.out.println("圆形周长为:"+C.celPerimeter()+"颜色为:"+C.getColor());
    }
}
Car类
代码语言:javascript
复制
package 命运之光;
public class Car extends Vehicle {
    public int loader;
    Car(){}
    Car(int loader)
    {
        super();
        this.loader=loader;
    }
    Car(int loader,int wheels,double weight)
    {
        super(wheels,weight);
        this.loader=loader;
    }
    public String put()
    {
        System.out.println("小车车轮数为:"+wheels+";小车车重为:"+weight+"载人数为:"+loader+"人");
        return "小车车轮数为:"+wheels+";小车车重为:"+weight+"载人数为:"+loader+"人";
    }
    public void cardemo()
    {
        System.out.println("汽车的特有方法");
    }
}
Circle类
代码语言:javascript
复制
package 命运之光;
public class Circle extends Shape{
    private double radius;
    Circle(){}
    Circle(double radius,String color)
    {
        super(color);
        this.radius=radius;
    }
    public double celPerimeter()
    {
        return 2*radius*3.14;
    }
}
Shape类
代码语言:javascript
复制
package 命运之光;
public abstract class Shape {
    private String color;
    Shape(){}
    Shape(String color)
    {
        this.color=color;
    }
    public String setColor(String color)
    {
        this.color=color;
        return this.color;
    }
    public String getColor()
    {
        return this.color;
    }
    public abstract double celPerimeter();
}
Triangle类
代码语言:javascript
复制
package 命运之光;
public class Triangle extends Shape{
    private double a;
    private double b;
    private double c;
    Triangle(){}
    Triangle(double a,double b,double c,String color)
    {
        super(color);
        this.a=a;
        this.b=b;
        this.c=c;
    }
    public double celPerimeter()
    {
        return a+b+c;
    }
}
Truck类
代码语言:javascript
复制
package 命运之光;
public class Truck extends Vehicle {
    public double payload;
    Truck(){}
    Truck(double payload)
    {
        super();
        this.payload=payload;
    }
    Truck(double payload,int wheels,double weight)
    {
        super(wheels,weight);
        this.payload=payload;
    }
    public String put()
    {
        System.out.println("卡车车轮数为:"+wheels+";卡车车重为:"+weight+"卡车载重为:"+payload+"千克");
        return "卡车车轮数为:"+wheels+";卡车车重为:"+weight+"卡车载重为:"+payload+"千克";
    }
}
Vehicle类
代码语言:javascript
复制
package 命运之光;
public abstract class Vehicle {
    public int wheels;//车轮个数
    public double weight;//车重
    Vehicle(){}//空参构造
    Vehicle(int wheels,double weight)//全参构造
    {
        this.wheels=wheels;
        this.weight=weight;
    }
    public abstract String put();//输出相关信息
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ✨一、需求设计
  • ✨二、概要设计
  • ✨三、详细设计
  • ✨四、调试结果
  • ✨五、测试结果
  • ✨附录:源程序代码(带注释)
    • demo4类
      • Car类
        • Circle类
          • Shape类
            • Triangle类
              • Truck类
                • Vehicle类
                相关产品与服务
                腾讯云服务器利旧
                云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档