java 类_第 5 单元:您的第一个 Java 类

第 5 单元:您的第一个 Java 类

在 Eclipse 中创建和测试类

c6f8001298d22bef23064ca63c0820d7.png

2016 年 10 月 11 日发布

开始之前

本单元是 “Java 编程入门”

学习路径的一部分。尽管各单元中讨论的概念具有独立性,但实践组件是在您学习各单元的过程中逐步建立起来的,推荐您在继续学习之前复习 前提条件、设置和单元细节。

单元目标使用 Eclipse Package Explorer 创建包和声明类

向类添加变量和方法

了解 Logger 类如何帮助您关注应用程序的行为

使用 Eclipse 代码生成器

创建一个 JUnit 测试案例并在 Eclipse 内运行它

您的 Person 类

您即将要创建和使用第一个 Java 类了 — 您目前在摘要中了解的同一个 Person

类。下面的视频演示了本单元的所有步骤。首先观看它,然后我将以文字形式简要复述这些步骤,同时更仔细地分析代码。

Java 编程入门,第 5 单元:您的第一个 Java 类

c0814e0b51bc891871efd2edecbe1744.png

c0814e0b51bc891871efd2edecbe1744.png

第 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 步:添加类变量

在 第 4 单元 中,您已看到如何开始扩充 Person

类,但我没有过多地解释语法。现在我将更正式地介绍如何添加类变量。

出于方便,清单 1 复制了您在第 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. 原语数据类型类型大小默认值值范围boolean不适用falsetrue 或

false

byte8 位0-128 到

127

char16

位(无符号)\u0000' \u0000' 到

\uffff' 或 0 到 65535

short16 位0-32768 到

32767

int32 位0-2147483648 到

2147483647

long64

位0-9223372036854775808 到

9223372036854775807

float32

位0.01.17549435e-38 到 3.4028235e+38

double64 位0.04.9e-324

到 1.7976931348623157e+308

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

}

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

使用 main() 作为测试工具

main()

是一个特殊方法,您可将它包含在任何类中,以便 JRE 可执行它的代码。类不是必须拥有 main() 方法

— 事实上,大部分类从来没有— 而且类最多只能有一个 main()

方法。main() 是一种值得拥有的方便方法,因为它为类提供了一个快速测试平台。在企业开发中,可以使用测试库,比如

JUnit,但使用 main() 可能是一种创建测试平台的应急方式。

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

现在可以生成一个 JUnit 测试案例,在其中使用清单 2

中的构造方法实例化一个 Person,然后将该对象的状态打印到控制台。从这种意义上讲,“测试”

可确保调用的构造方法上的属性顺序是正确的(也即它们的设置为了正确的属性)。

在 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 视图表明测试运行正常。

进一步探索

Dave Thomas、Andy Hunt 和 Jeff Langr 编写的 Java 8 中使用 JUnit 的实用单元测试

Kent Beck 编写的 JUnit 口袋书

Allen B. Downey 和 Chris Mayfield 编写的Java

编程思想(参阅第 11 章 “类”)

Cay Horstman 编写的 Java 核心技术(参阅 “第 4 课:对象和类”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值