mirror of
https://gitee.com/gaohongy/Java-Book.git
synced 2026-07-16 10:33:49 +00:00
修正全书错别字、术语统一和逻辑错误
This commit is contained in:
+8
-8
@@ -11,7 +11,7 @@
|
||||
|
||||
好了,这就是类与对象的基本内涵。类是一个模板(抽象的描述),对象是模板的一个实例(具体的)。这一点有点类似C中结构体的定义与结构体变量的关系,定义是抽象描述,变量是实体。
|
||||
|
||||
我们再深入讨论一下对象。对象(Object)这个概念广泛存在于我们的生活当中,一般只一个独立的个体,具备一定的特性(properties),并有一定的能力(capability)。例如,一辆A100:
|
||||
我们再深入讨论一下对象。对象(Object)这个概念广泛存在于我们的生活当中,一般指一个独立的个体,具备一定的特性(properties),并有一定的能力(capability)。例如,一辆A100:
|
||||
|
||||

|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
考虑到已经学习过C语言,使用C语言中的结构体来帮助理解抽象描述与实例的关系。
|
||||
|
||||
这个例子是描述平面中的一个圆。这里我们需要两组参数来描述圆,第一个参数是坐标位置(X、Y);另外一个是圆本生的描述,例如大小(半径r),可能还有颜色等等,简单来说,我们目前只有半径。如果从C语言出发,需要建立一个结构体来描述圆,请同学们写出该结构体的代码。
|
||||
这个例子是描述平面中的一个圆。这里我们需要两组参数来描述圆,第一个参数是坐标位置(X、Y);另外一个是圆本身的描述,例如大小(半径r),可能还有颜色等等,简单来说,我们目前只有半径。如果从C语言出发,需要建立一个结构体来描述圆,请同学们写出该结构体的代码。
|
||||
|
||||
如果从C语言出发,需要建立一个结构体来描述圆,代码如下:
|
||||
|
||||
@@ -135,7 +135,7 @@ public class Circle_Test {
|
||||
}
|
||||
```
|
||||
|
||||
**注意`setCircle`函数中的`this.x = x`这样的写法。因为这个对象本生有变量x、y、z;这些变量叫做成员变量,其作用域是在整个类的定义范围内;但是`setCircle`的形式参数中的x、y、z与成员变量重名了,但是语义不同。为了区分这两个变量,使用this关键字,`this.x`代表对象的成员变量,而`x`代表传递进来的参数。**
|
||||
**注意`setCircle`函数中的`this.x = x`这样的写法。因为这个对象本身有变量x、y、z;这些变量叫做成员变量,其作用域是在整个类的定义范围内;但是`setCircle`的形式参数中的x、y、z与成员变量重名了,但是语义不同。为了区分这两个变量,使用this关键字,`this.x`代表对象的成员变量,而`x`代表传递进来的参数。**
|
||||
|
||||
### 1.5. 构造函数
|
||||
|
||||
@@ -251,7 +251,7 @@ SDK中的一些类:
|
||||
|
||||
## 4. 类的成员
|
||||
|
||||
在本章节以前,我们也看到过类,也有相应的变量和函数,但是大多是静态的。本章开始,如同Circle类一样,定义的变量、函数都没有static的修饰,叫做实体变量和实体函数(区别于动态)。实体类型的变量和函数只能在引用对象的变量上面进行调用,而不能在类上进行调用。
|
||||
在本章节以前,我们也看到过类,也有相应的变量和函数,但是大多是静态的。本章开始,如同Circle类一样,定义的变量、函数都没有static的修饰,叫做实体变量和实体函数(区别于静态)。实体类型的变量和函数只能在引用对象的变量上面进行调用,而不能在类上进行调用。
|
||||
|
||||
定义在类中的变量、常量、函数都叫做类的成员,根据这些成员的不同性质,总结一下:
|
||||
|
||||
@@ -326,7 +326,7 @@ public class Test {
|
||||
```
|
||||
|
||||
1. 静态变量`numberOfObjects`的初始值是0,因此在主函数的第二行,使用`CircleWithStaticMembers.getNumberOfObjects()`取得这个静态变量的值的时候是0。这里证明了静态变量不依附对象存在,可以在类上面直接调用。
|
||||
2. `CircleWithStaticMembers`的两个构造函数(重载的构造函数)都对`numberOfObjects`进行了加1操作,语义是当创建一个`CircleWithStaticMembers’`对象的时候,让静态变量`numberOfObjects`加1,这样就得到了创建`CircleWithStaticMembers`对象的总数量。
|
||||
2. `CircleWithStaticMembers`的两个构造函数(重载的构造函数)都对`numberOfObjects进行了加1操作,语义是当创建一个`CircleWithStaticMembers’`对象的时候,让静态变量`numberOfObjects`加1,这样就得到了创建`CircleWithStaticMembers`对象的总数量。
|
||||
3. 注意后面的代码,得到`CircleWithStaticMembers`类实例化对象的个数可以使用静态变量`numberOfObjects`,也可以使用静态函数`getNumberOfObjects()。`且这两个静态成员即可以在类上面调用,也可以在对象的引用变量上调用。
|
||||
|
||||
**静态成员可以在类上访问,也可以在该类的引用变量上访问;这两种方式都是合法的,且没有任何的区别。**
|
||||
@@ -408,7 +408,7 @@ public class CircleWithPrivateDataFields {
|
||||
}
|
||||
```
|
||||
|
||||
这样清楚了,`radius` 这个变量被设置成私有,`getRadius()` 是共有函数,用于读取半径;`setRadius()` 是共有函数,用于设置半径。这两个函数就是 getter 和 setter 函数。特别注意,在 `setRadius` 函数中对传入参数进行了判断。这个函数好像是看门人,保证半径永远不为复数。
|
||||
这样清楚了,`radius` 这个变量被设置成私有,`getRadius()` 是共有函数,用于读取半径;`setRadius()` 是共有函数,用于设置半径。这两个函数就是 getter 和 setter 函数。特别注意,在 `setRadius` 函数中对传入参数进行了判断。这个函数好像是看门人,保证半径永远不为负数。
|
||||
|
||||
因为getter和setter函数用得太多了,eclipse 和大多Java的IDE为这个函数提供了快速构建方式。你只需要选择菜单`Source`-`Generate Getters and Setters ...`就会出现下面的窗口。
|
||||
|
||||
@@ -493,7 +493,7 @@ public class TestPassObject {
|
||||
|
||||
这个例子证明,如果是引用变量,在函数内部可以改变传入对象的成员变量值;其实这里使用的是setter函数改变半径的,因为半径是私有的;如果半径是public的,使用直接赋值也可以改变。
|
||||
|
||||
如果我么在`printAreas`函数执行完成后,打印n这个变量(作为参数times传入`printAreas`函数),会发现这个值还是5;因为基本类型的变量使用的是值传递。
|
||||
如果我们在`printAreas`函数执行完成后,打印n这个变量(作为参数times传入`printAreas`函数),会发现这个值还是5;因为基本类型的变量使用的是值传递。
|
||||
|
||||
## 7. 对象数组
|
||||
|
||||
@@ -590,7 +590,7 @@ public class TotalArea {
|
||||
|
||||
If the contents of an object cannot be changed once the object is created, the object is called an immutable(不变的) object and its class is called an immutable class. If you delete the set method in the Circle class in Listing 8.10, the class would be immutable because radius is private and cannot be changed without a set method.
|
||||
|
||||
这个概念需要了解,我们目前使用到的Immutable类是Spring,下一章中所有的 warp 类型也是 Immutable。
|
||||
这个概念需要了解,我们目前使用到的Immutable类是String,下一章中所有的 wrapper 类型也是 Immutable。
|
||||
|
||||
## 9. 变量作用域
|
||||
|
||||
|
||||
Reference in New Issue
Block a user