关于“类”的实际例子
为了更好的理解,我们选择一个动物,任何动物都可以。我选择熊,因为我喜欢熊。现在,请问你自己,你能否在OOP的框架下,将这头熊看做是一个“对象”?为什么不呢?毕竟,每只熊都有特定的特征:年龄、体重、性别---这些都相当于对象属性。而且每只熊可以执行特定的活动:吃、睡、走、跑、交配---所有这些都相当于对象方法。
让我们再稍微进一步。因为所有的熊都共享某些特定的特征,所以设想一个Bear()模板是可能的,该模板定义了这个星球上每只熊的基本特征和能力。一旦这个Bear()(“类”)用于创建新的变量$bear(“对象”),那么新创建的熊的个体特征可以独立于其他用这个模板来创建的熊而被操作。
现在,如果你坐下来使用PHP 5编写该类代码,那么它可能会看起来像下面这个样子:
<?php // PHP 5 // class definition class Bear { // define properties public $name; public $weight; public $age; public $sex; public $colour; // define methods public function eat() { echo $this->name." is eating... "; } public function run() { echo $this->name." is running... "; } public function kill() { echo $this->name." is killing prey... "; } public function sleep() { echo $this->name." is sleeping... "; } } ?>
给出这个类后,现在可以很容易地生成和你想要的一样多的熊,然后调整每只熊的个体属性。请看:
<?php // my first bear $daddy = new Bear; // give him a name $daddy->name = "Daddy Bear"; // how old is he $daddy->age = 8; // what sex is he $daddy->sex = "male"; // what colour is his coat $daddy->colour = "black"; // how much does he weigh $daddy->weight = 300; // give daddy a wife $mommy = new Bear; $mommy->name = "Mommy Bear"; $mommy->age = 7; $mommy->sex = "female"; $mommy->colour = "black"; $mommy->weight = 310; // and a baby to complete the family $baby = new Bear; $baby->name = "Baby Bear"; $baby->age = 1; $baby->sex = "male"; $baby->colour = "black"; $baby->weight = 180; // a nice evening in the Bear family // daddy kills prey and brings it home $daddy->kill(); // mommy eats it $mommy->eat(); // and so does baby $baby->eat(); // mommy sleeps $mommy->sleep(); // and so does daddy $daddy->sleep(); // baby eats some more $baby->eat(); ?>
正如上面所展示的解释那样,一旦新的对象被定义,它们的个体方法和属性可以相互独立的被访问和修改。这个会派上用场的,本次教程的剩余部分将会说明这一点。