中南林业科技大学Java实验报告五:类与对象

实验5:类与对象

5.1 实验目的

  1. 学习类的一般结构;
  2. 掌握类的成员变量和成员方法的声明;
  3. 掌握Java程序对象的创建和利用对象调用成员变量和成员方法;
  4. 学习方法调用时参数的传递

5.2 实验内容

5.2.1 编写一个Java程序,在程序中定义一个Bamboo(竹子)类,并且完善Bamboo类的结构;

【前提引入】

  • 成员属性访问权限应当设置为私有,对外提供公共的getter与setter方法,这也是封装特性的重要体现。其实方法调用是有成本的,但实际上,java编译器一般会对这几个方法的调用转换为直接访问实例变量,而避免方法调用的开销。很多情况下,通过方法调用可以封装内部数据,避免错误操作。
  • Math.PI :Math类的静态变量PI,即表示Π的值
  • 类默认无参构造器,如果声明了构造器,那么原本默认的无参构造器将失效。因此如果还想有无参构造器,我们需要手动声明

【运行流程】

public class Bamboo {
    /**
     * 竹子名字
     */
    private String name;
    /**
     * 竹子年龄
     */
    private int age;
    /**
     * 高度
     */
    private float height;
    /**
     * 直径
     */
    private double diameter;

    /**
     * 全参构造器
     *
     * @param name     名字
     * @param age      年龄
     * @param height   高度
     * @param diameter 直径
     */
    public Bamboo(String name, int age, float height, double diameter) {
        this.name = name;
        this.age = age;
        this.height = height;
        this.diameter = diameter;
    }

    /**
     * 无参构造器
     */
    public Bamboo() {

    }

    public double volume() {
        return Math.PI * diameter / 2 * diameter / 2 * height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public float getHeight() {
        return height;
    }

    public void setHeight(float height) {
        this.height = height;
    }

    public double getDiameter() {
        return diameter;
    }

    public void setDiameter(double diameter) {
        this.diameter = diameter;
    }
}

image-20220927095720922

5.2.2 编写一个Java程序,在程序中创建Bamboo类的两个实例,并访问他们的属性和方法。

【前提引入】

  • 类的基本结构
    1. 成员变量
    2. 成员方法
    3. 构造器
    4. 内部类
    5. 代码块
  • 对象创建流程分析(初级)
    1. 方法区中加载类信息(只会加载一次)
    2. 在堆中分配空间(地址)
    3. 完成对象初始化
      1. 默认初始化
      2. 显示初始化
      3. 构造器初始化
    4. 将对象在堆中的地址返回给栈中的对象引入

【运行流程】

public static void main(String[] args) {
    //创建对象引入 bam1 ,指向堆中的 Bamboo 实例对象
    Bamboo bam1 = new Bamboo();
    //设置姓名
    bam1.setName("楠竹");
    //设置年龄
    bam1.setAge(2);
    //设置高度
    bam1.setHeight(6);
    //设置直径
    bam1.setDiameter(1);
    System.out.println("名称:"+bam1.getName()+" 生长时长:"+bam1.getAge());
    System.out.println("高度:"+bam1.getHeight()+" 直径:"+bam1.getDiameter());
    System.out.println("体积:"+bam1.volume());
}

image-20220927095946536

5.2.3 编写一个Java程序,在(1)的基础上为Bamboo类增加一个方法,该方法能够接收参数并对Bamboo类的各个属性进行赋值。

【前提引入】

  • 可以为各个变量赋值的优选方法即为全参构造器,但这里要求我们设置一个setBamboo方法,代码差不多

【运行流程】

💬 这段代码添加到 Bamboo 类中。

    /**
     * 全参赋值
     *
     * @param name     名字
     * @param age      年龄
     * @param height   高度
     * @param diameter 直径
     */
    public void setBamboo(String name, int age, float height, double diameter) {
        this.name = name;
        this.age = age;
        this.height = height;
        this.diameter = diameter;
    }

image-20220927101527479

public static void main(String[] args) {
    Bamboo bam2 = new Bamboo();
    bam2.setBamboo("毛竹", 3, 5, 0.2);
    System.out.println("名称:" + bam2.getName() + " 生长时长:" + bam2.getAge());
    System.out.println("高度:" + bam2.getHeight() + " 直径:" + bam2.getDiameter());
    System.out.println("体积:" + bam2.volume());
}

image-20220927101856007

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是谢添啊

感谢你的支持,我会继续加油的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值