Tutorial
在Java中一切都包含在类和对象中. Java对象持有状态,状态是该对象内一起保存的变量,我们称他们为字段或成员变量。
让我们从一个例子开始:
class Point {
int x;
int y;
}
这个类定义一个点 (拥有x和y属性值)
如果要实例化一个类, 需要使用关键字 new
.
Point p = new Point();
在这个列子中, 我们使用了默认构造器 (这个构造器没有参数) 创建这个类. 所有的类不需要显示的定义不干任何事情的默认构造器.
我们可以定义一个自己的构造器:
class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
这意味着我们不适用默认的构造器 new Point()
. 我们现在只能够使用这个构造器 new Point(4, 1)
.
我们也可以定义多个构造器, Point
对象可以多种方式创建.下面,我们重新定义默认构造器.
class Point {
int x;
int y;
Point() {
this(0, 0);
}
Point(int x, int y) {
this.x = x;
this.y = y;
}
注意关键字 this
的使用. 我们可以在构造器中调用其他的构造器 (避免代码重复),但只能写在构造方法的第一行.
在运行这个类时,我们也可以使用 this
关键字作为当前对象的使用 .
定义了对象p
后 p
可以定义它的属性 x
和 y
.
p.x = 3;
p.y = 6;
方法
我们可以在类 Point
中定义方法。
class Point {
... // Our code previously
void printPoint() {
System.out.println("(" + x + "," + y + ")");
}
Point center(Point other) {
// 返回中心点
// 因为我们使用的是integer, 这会得到一个约值
return new Point((x + other.x) / 2, (y + other.y) / 2);
}
Public公共 and Private私有
我们后面会讨论修饰符, 一定要理解 变量 和 方法前的 private
和 public
修饰符的作用 .
当我们使用关键字 private
定义在变量和方法前时, 是指只用类本事才能方法到变量和方法, 当使用 public
时,指所有的类都可以方法到它。 我们常常看到构造器定义为公共的public
,定义私有变量 和定义方法是分开的,他们可以不同。
Exercise
在类Point中写一个scale
方法,求中心点。比如 point (8, 4) 经过 scale 方法处理后 变为 (4, 2).
Tutorial Code
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public void print() {
System.out.println("(" + x + "," + y + ")");
}
// 你的代码写在这
}
public class Main {
public static void main(String[] args) {
Point p = new Point(32, 32);
for (int i = 0; i < 5; i++) {
p.scale();
p.print();
}
}
}
Expected Output
(16.0,16.0)
(8.0,8.0)
(4.0,4.0)
(2.0,2.0)
(1.0,1.0)
Solution
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public void print() {
System.out.println("(" + x + "," + y + ")");
}
public void scale(){
x = x/2;
y = y/2;
}
}
public class Main {
public static void main(String[] args) {
Point p = new Point(32, 32);
for (int i = 0; i < 5; i++) {
p.scale();
p.print();
}
}
}