可能还有很大一部分人,包括长时间使用面向对象编程的人,对类、对象、实例三者之间的差别还不是特别清楚。
其实任何一个概念,只要他们的名称不同,那么他们必然就不是一个东西。
废话少说,看定义:
- 对象 Object:表示的是某一类事物的抽象的名词和概念,是对一类事物的抽象表示。比如,“人”就是一个对象。
- 实例:根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。比如通过类 Person,创建了两个"人“(对象),分别是张三和李四,张三和李四就是实例,他们身份证号码是不一样的,可能都是男性,可能年龄不一样,但都具有说话或走路等人具有的行为能力。
- 类 Class:对象在计算机中的表示,如定义一个“人”的类:
<?php
class Person
{
private $name;
public function set($name)
{
$this->name=$name;
}
public function get()
{
return $this->name;
}
public function run()
{
echo $this->name,' can run', PHP_EOL;
}
}
$zhangsan=new Person; // 创建一个对象或者叫实例化一个对象,该实例是张三
$zhangsan->set('张三');
$lisi->run(); // 张三具有”人“所具备的走路的能力,”走“的方法
$lisi=new Person; // 创建一个对象或者叫实例化一个对象,该实例是李四
$lisi->set('李四');
$lisi->run(); // 李四具有”人“所具备的走路的能力,”走“的方法
想想各个名词本身的定义应该就能很好地对这三个概念进行理解。
但是实际工作中大家一般不会去细分对象和实例的关系,一般认为是一个东西。不过我觉得还是需要进行区分,如果完全是一个东西,何必给出两个概念让人迷糊呢?