![Java核心编程](https://wfqqreader-1252317822.image.myqcloud.com/cover/463/34752463/b_34752463.jpg)
上QQ阅读APP看书,第一时间看更新
3.2 类的示例
在现实世界中,经常会发现许多单个对象都是同类。有可能成千上万条狗都是一样的品种,比如都是哈士奇或者藏獒。每种类型的狗都具有相同的行为。在面向对象的术语中,我们将某条狗称为狗对象类(class of objects)的实例(instance)。类(class)就是创建单个对象的品种。
下面是一个Dog(狗)类的实现:
![](https://epubservercos.yuewen.com/7C97BD/18562448808360806/epubprivate/OEBPS/Images/Figure-P99_54766.jpg?sign=1738819483-tBVO1vqUnUFc18Sw4phwtPHwT7wRyo4H-0-f73f201a6a5c06d763464ba119cf5d54)
字段color和name是对象的状态,方法bark和wag定义了与外界的交互。
你可能已经注意到,Dog类不包含main方法。这是因为它不是一个完整的应用程序。这里只是定义了Dog这个类,并可能会在应用程序中使用。创建和使用新的Dog对象是应用程序中其他类的责任。
下面的DogDemo类创建两个单独的Dog对象,并调用其方法:
![](https://epubservercos.yuewen.com/7C97BD/18562448808360806/epubprivate/OEBPS/Images/Figure-P100_54767.jpg?sign=1738819483-FWVMRyRpEXomPYxy0I0LMr4yidPHPCoO-0-7d962a0a268a359e8b42038227c58200)
在这个例子中,类的名称是Dog,Dog对象的名称分别是dog1和dog2,可向Lucy对象发出的请求包括叫唤(bark)、摇尾(wag)。我们是通过使用new关键字来新建对象的。为了向对象发送一条消息,我们列出对象名(dog1、dog2),再用一个句点符号(.)把它同消息名称(bark、wag)连接起来。从中可以看出,使用一些预先定义好的类时,我们在程序里采用的代码是非常简单和直观的。
执行程序,输出为:
Black Lucy barking... Black Lucy wagging... White Lily barking... White Lily wagging...