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

简介: 中南林业科技大学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;
    }
}

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

【前提引入】

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

【运行流程】

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());
}

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;
    }

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());
}


相关文章
|
2月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
294 0
|
2月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
105 4
|
2月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
175 5
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
169 1
|
2月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
228 1
|
2月前
|
存储 Java 程序员
【Java】(6)全方面带你了解Java里的日期与时间内容,介绍 Calendar、GregorianCalendar、Date类
java.util 包提供了 Date 类来封装当前的日期和时间。Date 类提供两个构造函数来实例化 Date 对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
177 0
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
195 1
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
294 5
|
3月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
153 0