当前位置: 首页 > 文档资料 > Java 入门教程 >

您的第一个 Java 类

优质
小牛编辑
126浏览
2023-12-01

目标

  • 使用 Eclipse Package Explorer 创建包和声明类
  • 向类添加变量和方法
  • 了解 Logger 类如何帮助您关注应用程序的行为
  • 使用 Eclipse 代码生成器
  • 创建一个 JUnit 测试案例并在 Eclipse 内运行它

您的 Person 类

第 1 步:创建一个包

不使用默认包(几乎始终是一种不好的做法),而专门为您编写的代码创建一个包。单击 File > New > Package 启动 Java Package 向导。将 com.makotojava.intro 键入到 Name 文本框中,然后单击 Finish。

第 2 步:声明类

现在可以在 Package Explorer 中看到您的新包。从这里创建类的最简单方式是,右键单击该包并选择 New > Class...。在 New Class 对话框的 Name 文本框中,键入 Person,然后单击 Finish。

Eclipse 为您生成了一个 shell 类并在编辑窗口中显示了源代码:

package com.makotojava.intro;

public class Person {

}

可选地,可以整理一下工作区,关闭不需要的视图。

第 3 步:添加内置记录功能

在进行进一步编码之前,您需要知道程序如何告诉您它们在做什么。

Java 平台包含 java.util.logging 包,这是一种以可读形式收集程序信息的内置记录机制。Loggers 是您通过对 Logger 类的静态方法调用所创建的指定实体:

import java.util.logging.Logger;
//...
Logger l = Logger.getLogger(getClass().getName());

调用 getLogger() 方法时,您向它传递一个 String。就现在而言,只需要养成传递您编写的代码所在类的名称的习惯即可。对于任何普通(也即非静态)方法,前面的代码始终引用该类名并将它传递给 Logger。

如果您在一个静态方法内调用 Logger,可引用您所在的类的名称:

Logger l = Logger.getLogger(Person.class.getName());

您所在的代码是 Person 类,所以您引用一个名为 class 的特殊字面常量,该常量检索 Class 对象(后面将更详细介绍)并获取其 Name 属性。添加记录代码,使 Person 现在看起来类似于:

package com.makotojava.intro;

import java.util.logging.Logger;

public class Person {

Logger l = Logger.getLogger(Person.class.getName());

}

第 4 步:添加类变量

在上一节课程中,您已看到如何开始扩充 Person 类,但我没有过多地解释语法。现在我将更正式地介绍如何添加类变量。

清单 1. 包含构造方法的 Person 类定义

package com.makotojava.intro;
public class Person {
  private String name;
  private int age;
  private int height;
  private int  weight;
  private String eyeColor;

  private String gender;
  public Person() {
    // Nothing to do...
  }

  public Person(String name, int age, int height, int weight String eyeColor, String gender) {
    this.name = name;
    this.age = age;
    this.height = height;
    this.weight = weight;
    this.eyeColor = eyeColor;
    this.gender = gender;
  }
}

回想一下,一个变量有一个 accessSpecifier、一个 dataType、一个 variableName 和一个可选的 initialValue。在第 4 单元中,您简要了解了如何定义 accessSpecifier 和 variableName。

dataType 可以是原语类型或对另一个对象的引用。例如,在 清单 1 中可以注意到,age 是一个 int(原语类型),name 是一个 String(对象)。JDK 带来了大量有用的类,比如 java.lang.String,而且 java.lang 包中的类不需要导入(Java 编译器提供的一种速记形式)。但无论 dataType 是 JDK 类(比如 String)还是用户定义的类,语法都基本相同。

表 1 给出了您可能经常使用的 8 种原语数据类型,包括在您没有显式初始化一个成员变量的值时,采用的原语的默认值。

表 1. 原语数据类型

第 5 步:添加 getter、setter、构造方法和 main 方法

返回到 Person 的 Eclipse 源代码编辑器,添加以下代码中的第 3 到 7 行,以便您的类现在类似于:

package com.makotojava.intro;

import java.util.logging.Logger;

public class Person {

  Logger l = Logger.getLogger(Person.class.getName());

  private String name;
  private int age;
  private int height;
  private int weight;
  private String eyeColor;
  private String gender;
}

Eclipse 拥有一个方便的代码生成器来生成 getter 和 setter(以及其他方法)。右键单击 Package Explorer 中的 Person 类并选择 Source > Generate Getters and Setters...。在 Generate Getters and Setters 对话框中,选择除 l(它表示记录器)的所有属性并单击 OK。

现在将清单 2 中的代码输入源代码窗口中,放在类定义的顶部部分(public class Person () 下面一行)之下,从而向 Person 添加一个构造方法。

清单 2. Person 构造方法

public Person(String name, int age, int height, int weight, String eyeColor, String gender) {
  this.name = name;
  this.age = age;
  this.height = height;
  this.weight = weight;
  this.eyeColor = eyeColor;
  this.gender = gender;
}

确保没有看到表明编译错误的波浪线。

第 6 步:生成一个 JUnit 测试案例

现在可以生成一个 JUnit 测试案例,在其中使用清单 2 中的构造方法实例化一个 Person,然后将该对象的状态打印到控制台。从这种意义上讲,“测试” 可确保调用的构造方法上的属性顺序是正确的(也即它们的设置为了正确的属性)。

使用 main() 作为测试工具 main() 是一个特殊方法,您可将它包含在任何类中,以便 JRE 可执行它的代码。类不是必须拥有 main() 方法 — 事实上,大部分类从来没有— 而且类最多只能有一个 main() 方法。main() 是一种值得拥有的方便方法,因为它为类提供了一个快速测试平台。在企业开发中,可以使用测试库,比如 JUnit,但使用 main() 可能是一种创建测试平台的应急方式。

在 Package Explorer 中,右键单击您的 Person 类,然后选择 New > JUnit Test Case。在 New JUnit Test Case 向导的第一页,单击 Next 接受默认设置。在 Test Methods 对话框中 — 您在这里选择您希望向导为其构建测试的方法 — 仅选择构造方法并单击 Finish。Eclipse 然后将生成 JUnit 测试案例。

打开 PersonTest,进入 testPerson() 方法,使它看起来类似于清单 3。

清单 3. testPerson() 方法

@Test
public void testPerson() {
  Person p = new Person("Joe Q Author", 42, 173, 82, "Brown", "MALE");
  Logger l = Logger.getLogger(Person.class.getName());
  l.info("Name: " + p.getName());
  l.info("Age:" + p.getAge());
  l.info("Height (cm):" + p.getHeight());
  l.info("Weight (kg):" + p.getWeight());
  l.info("Eye Color:" + p.getEyeColor());
  l.info("Gender:" + p.getGender());
  assertEquals("Joe Q Author", p.getName());
  assertEquals(42, p.getAge());
  assertEquals(173, p.getHeight());
  assertEquals(82, p.getWeight());
  assertEquals("Brown", p.getEyeColor());
  assertEquals("MALE", p.getGender());
}

第 7 步:在 Eclipse 中运行单元测试

在 Eclipse 中,右键单击 Package Explore 中的 PersonTest.java 并选择 Run As > JUnit Test。控制台视图将自动打开以显示 Logger 输出,JUnit 视图表明测试运行正常。