类是Java等面向对象语言的基础单位――一个定义了从类生成的实例(instance)中的数据和行为的关系的模板。当你实例化(instantiate)一个类以后便得到一个该类的对象(object),拥有类的全部数据和行为。一般我们把类和对象的数据称为变量,把行为称为方法。Java语言使用class关键词来定义一个类,之后的一对大括号定义了该类的变量和方法。我们的HelloWorldApp类没有变量,只有一个main方法。
类和对象的关系很好理解――类是一个抽象概念,好比“人”,而对象是一个具体的人,比如小布什、普京,他们作为人都有七情六欲(变量),都会衣食住行(方法)。
在第二篇连载《第一杯咖啡》中,为了避免类和对象的概念,我直接把HelloWorldApp称作了对象。现在你应该明白,这个说法是不准确的,HelloWorldApp是一个类,而main是这个类的方法。现在正式拨乱反正。
三、main方法
每个Java应用程序都必须包含一个main方法,语法如下:
public static void main(String[] args)
main方法包含三个修饰词:
(1)public:表示main方法可以由任何对象调用。
(2)static:表示这是一个类方法,区别于实例方法,与具体的对象无关。
(3)void:表示main方法没有返回值。
main方法是Java语言中非常特殊的方法,类似于C/C++中的main函数。当Java解析器执行Java应用程序,它首先执行这个Java类的main方法。你应该把程序的逻辑,比如打印Hello World!字样,写在main里面。
main方法有一个参数,即args,它是一个字符串数组,操作系统通过这个机制传递命令行参数。由于Hello World!程序忽略命令行参数,所以这里不展开讨论了。
四、使用类和对象
让我们以Hello World!程序来详细解释类和对象的使用。
Hello World!程序很小,只定义了最基本的HelloWorldApp类。虽然如此,它的确使用了其他类――System类:
System.out.println("Hello World!");
System类是Java API的成员之一,提供了操作系统无关地操作操作系统相关功能的能力,很拗口,不过的确如此。out是System的类变量(与前面提到的类方法的意思一致)。实际上,System的所有变量都是类变量,所有方法都是类方法――都是用static修饰的,你可以通过“.”操作符直接访问。比如,System类有一个getProperty类方法可以获取操作系统属性,至于具体是什么操作系统,你无需事必躬亲了。若把Hello World!程序的main方法修改成:
public static void main(String[] args) {