前面一节讲到面向对象的封装,封装就是把现实世界同类事物的共同特征和行为抽取出来,放到一个新建的类中,并设置类属性(特征)和行为的访问权限,同时提供外部访问类属性和行为的方法。
类是把同类事物的共同特征和行为封装在一起的结构体,事物的特征称为属性,事物的行为称为方法,类是抽象的概念集合,表示的是一个共性的产物,类中定义的是属性和方法。例如前面一节创建的Fruits类(水果类),Fruits类有属性water(汁液含量)、sugar(糖分含量)、fragrance芳香度,这些属性是水果类所具有的共同特点,汁液含量丰富、糖分含量大、有一定程度的芳香气味。Fruits类也有方法showFruit(),showFruit对外展示水果的汁液含量度、糖分含量度、芳香度,当外部需要了解水果的各种成份含量时,可以调用类的showFruit方法。
在Java中,通过关键字class来声明类,类声明语法如下:
public class 类名
{
//定义类属性部分
属性1的类型 属性1;
属性2的类型 属性2;
……
属性n的类型 属性n;
//定义方法部分
方法1:
……
方法n:
}
一个完整的Java类由类声明和类体构成,类体内容包含在{ }括号之内。
类声明为“public class 类名”,其中class是Java类定义关键字,声明Java类时,类声明需要包含class关键字。public是Java预定义的访问权限关键字,用来修饰被定义类的访问权限,当被定义类修饰为public时,其它定义的外部类就可以访问该类的内部成员和方法。类体包含了类的属性和方法。
例1:定义一个日期类。
public class Date
{
//属性的定义
private int year;
private int month;
private int day;
//方法的定义
//判断是否是闰年
public boolean isRunnian()
{
if( ( year % 4 == 0 && year % 100 != 0) || year % 400 == 0 )
{
return true;
}
else
{
return false;
}
}
//输出如期
public void print()
{
System.out.println("year" + "-" + month + "-" + day);
}
}声明的日期类有year、month、day三个属性,用来存储日期的年、月、日。另外,日期类还提供了isRunnian()和print()两个方法,isRunnian()用于判断当前日期是否是闰年,print()用于输出当前日期。
例2:定义一个Person类
public class Person {
String name ;
int age ;
public void tell() {
System.out.println("姓名:" + name + ",年龄:" + age) ;
}
}声明的Person类有name、age两个属性,用来存储人的姓名、年龄。另外,Person类还提供了tell()方法,用来输出人的姓名、年龄。
如果用类的思想来描述职业信息的话,我们需要从职业这个事物中抽取共同特征和行为,并将抽取的特征和行为封装到一个类中,把这个类命名为Job, 把职业的共同特征名称、类别、技能、测评内容等作为Job的属性,把职业的评测行为作为方法,代码如下:
public class Job
{
//职业名称属性
private String jobName;
//职业类别属性
private String jobCategory;
//职业技能属性
private String jobTechnical;
//职业测评内容
private String jobExamination;
//输出测评内容
public void jobTest()
{
System.out.println(jobExamination);
}
}用eclipse创建Job类
启动eclipse,新建项目JobManager(创建项目步骤参见10.4节——用eclipse创建第一个HelloWorld项目),在JobManager项目下,创建com.milihua. job包(包的概念及创建步骤参见10.5节——理解Java包的概念)。
在“JobManager”项目列表中。选择新创建的“com.milihua. job”包项,单击鼠标右键,在弹出的菜单中选择“New”命令,再下一层菜单中选择“Class”命令,如下图所示:

图 11-6 在job包下创建Job类
系统弹出“New Java Calss”对话框中,如下图所示:

图 11-7 新建Java类对话框
对话框的主要选项或输入项说明如下:
① Source folder
创建的类代码文件默认的存储目录,默认目录为当前项目目录下的src目录,一般情况下,该目录不要改动。
② Package
创建的类隶属于哪个包(包的概念参见10.5节——理解Java包的概念)目录,一般无需改动。
③ Name
创建的类名称,在输入框中输入“Job”。
④ Superclass
创建类的父类(类的继承后面会讲述),默认的继承父类是java.lang.Object,本案例中无需改动。
⑤ public static void main(String[] args)
该选项是指在创建新类时,是否在新类中添加main方法,main方法是Java应用程序的入口,一般包含在项目主类(例如:10.4节的HelloWorld项目的HelloWorld类)中。本案例创建的Job类不是项目的主类,因此无须选择该选项。
在Name输入框中输入类名“Job”,其它选项采用默认值即可,单击“Finish”按钮即完成Job类的创建。
■ 知识点拨
从现实世界的事物中抽取特征并归纳为类,对Java初学者或项目经验缺乏者确实有一定的难度。不过也无须担心,从现实世界的事物中抽取特征并归纳为类属于项目的需求分析阶段,是系统分析员做的事情,在实际工作中,项目涉及到的类及属性和行为在需求规格说明书和系统设计文档中已经详细给出,程序员只需按照文档要求创建项目和编写类代码就可以了。
■ 思考与练习
请参照本节内容,在eclipse中创建Job类。