一切都是对象笔记-第二天

08/24/2011

2.4 创建新的数据类型 类(class)

如果一切都是对象,那么是什么决定了某一类对象的外观与行为呢?换句话说,是什么确定了对象的类型?class这个关键字表示“我准备告诉你一种心类型的对象的确定”。

class ATypeName {
	/* Class body goes here */
}

一旦定义了一个类,就可以在类中设置两种类型的元素:

  1. 字段:有时被称为数据成员
  2. 方法:又是被称为成员函数

如何引用一个对象的成员。具体的实现为:在对象引用的名称之后紧接着一个句点(.),然后再接着是对象内部的成员名称:

objectReference.member

若类的某个成员是基本数据类型,即使没有进行初始化,Java也会确保它获得一个默认值。然而确保初始化的方法并不适用与”局部“变量。

2.5 方法,参数,返回指

Java的方法决定了一个对象能够接收什么样的消息。方法的基本组成部分包括:名称,参数,返回值,方法体。

ReturnType methodName ( /* Argument list */ ) {
	/* Mehton body */
}

Java中的方法只能作为类的一部分来创建。方法只有通过对象才能被调用。
这种调用方法的行为通常被称为发送消息给对象。面向对象的程序设计通常简单地归纳为:向对象发送消息

2.5.1 参数列表

方法的参数列表指定要传递给方法什么样的消息。这写信息像Java中的其他信息一样,采用的都是对象形式。像Java中任何传递对象的场合一样,这里传递都的实际上也是引用(基本数据类型除外),并且引用的类型必须正确。

你可以定义方法返回任意想要的类型,如果不想返回任何值,可以指示此方法返回void(空)

2.6 构建一个Java程序的其他要点

2.6.1 名字可见性

Java采用了一种全新的方法来避免命名冲突的问题。为了给一个类库生成不会与其他名字混淆,冲突的名字,Java设计者希望程序员反过来使用自己的Internet域名,因为这样可以保证它们肯定是独一无二的。

2.6.2 运用其他构件

如果想在自己的程序里使用预先定义好的类,那么编译器就必须知道怎么定位它们:

  1. 这个类可能就在发出调用的那个源文件中,在这种情况下,就可以直接使用这个类。
  2. 如果那么类位于其他文件中,可以使用关键字import来准确的告诉编译器你想要的类是什么。
import java.util.ArrayList;
import java.util.*;

2.6.3 static 关键字

有两种情况:

  1. 只想为某特定域分配单一存储空间,而不去考虑究竟要创建多少对象,甚至根本就不创建任何对象。
  2. 希望某个方法不与包含它的任何对象关联在一起。也就是说,即使没有创建对象,也能够调用这个方法。

通过static关键字可以满足这两方面的需要。

class StaticTest {
	static int i = 47;
}
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

以上两个对象共享同一个 i ,因此 st1.i st2.i 的值都为 47。

引用static 变量有两种方法:

  1. 可以通过一个对象去定位它 st2.i
  2. 可以通过类名直接引用 StaticTest.i

类似逻辑也应用与静态方法。

尽管当static作用于某个字段时,肯定会改变数据创建的方式,但是如果static作用于某个方法,差别却没有那么大。static方法的一个重要用法就是在不创建任何对象的前提下就可以调用它。