1.2 类和对象
Die类游戏
概念
- 类(class) : 主要用于描述一组相似的对象,类是程序的一个封装的组件。
- UML(Unified Modeling Language, 统一建模语言): 用于图示软件开发的许多方面。
- 对象的字段(field) : 表示其当前状态。比如字段topFace表示制定Die的哪一面朝上。
- 对象的方法(method) : 表示对象可以执行的操作。比如要求骰子投掷自己。
- 字段全程实例变量或实例变量,因为十分常见所以简单称之为字段。
- 构造函数(constructor) : 构造函数是一个方法,用来初始化对象的所有字段。
public class Die { // 声明为私有(private)字段,表示不能被其他类中的方法访问。 private int topFace;
- 访问器(accessor) : 也称为读取器(getter),可以返回某一个字段的值。
- 修改器(mutator) : 也称为设置器(setter), 可以更改(改变)对象内的某个字段的值。
public static void main(String[] args) { // 在main方法中实例称为d,在非静态方法内(比如constructor) // 对象还没创建所以将当前对象称为this Die d = new Die(); d.topFace = 6; }
为什么需要getter和setter?
如果在Die类的内部,将topFace字段命名为d.topFace是好的,可是BeetleGame必须知道Die显示的是哪一面,但是如果让另一个类中的方法访问这个字段显然违反了封装原则。
- 静态方法(static method) : 静态方法是关于整个类的,有时又被称为类方法(class method),比如main()。
- 非静态方法 : 非静态方法有时称为实例方法(instance method), 在UML类图中,静态方法加有下划线。
代码
截止当前小节结束
Beetle类:
public class Beetle {
}
BeetleGame类:
public class BeetleGame {
}
Die类:
public class Die {
// field
private int topFace;
// constructor
public Die() {
this.topFace = 1; // 如果没有初始化,则会被附上默认值
}
public int getTopFace() {
return this.topFace;
}
public void setTopFace(int topFace) {
this.topFace = topFace;
}
public void roll() {
this.topFace = (int)((Math.random()) * 6)+ 1;
}
public static void main(String[] args) {
// 在main方法中实例称为d,在非静态方法内(比如constructor),对象还没创建所以将当前对象称为this
Die d = new Die();
System.out.println(d.getTopFace());
d.roll();
System.out.println(d.getTopFace());
}
}