刚开始使用PHP和OOP中的OOP。从我到目前为止阅读的内容看,这两个似乎是同义词。是这种情况,如果不是,实际上当人们提到对象和类时,他们通常会互换使用这些术语吗?
答案 0 :(得分:6)
通常会将一个对象称为类的实例。
所以你有一些课Employee
。
class Employee {
var $name;
function get_name ( ) { return $this->name; }
function set_name ($new_name) { $this->name = $new_name; }
}
你声明它的实例如:
$assistant = new Employee();
Employee
是一个班级。 $assistant
是一个对象,它是Employee类的一个实例。
所以回答你的问题 - 一个类不是一个对象。在实例化类时创建对象。
答案 1 :(得分:2)
对象和类是否通常可以互换使用这些术语?
没有。和其他OOP语言一样,类似于蓝图,比如房子。物体是建造后的实际房屋。确实非常不同。
// blueprint
class House
{
public $color;
public function __construct($color = 'red')
{
$this->color = $color;
}
}
// make red house
$redHouse = new House();
// make blue house
$blueHouse = new House('blue');
// Now we have two different houses (objects) made from the same blueprint (class)
答案 2 :(得分:1)
他们肯定不是同义词,如果你一直在阅读,那么是时候改变这本书了! : - )
类是类型,而对象是实例。
一个简单的例子是整数。 “Integer”表示类型,但整数$x
是该类型的实例。在PHP中没有强大的类型系统,所以这可能不完全明显,但我希望你能得到这个想法。同样,array
是一种类型,但$v = array();
创建了一个数组类型的实例(称为$v
)。
对于类,您不能像对数组一样说 ,而是必须使用$y = MyClass();
new
:$y = new MyClass();
。
答案 3 :(得分:0)
类是对象的定义。对象是类的实例。例如:
class Parser {
public function parse() {}
}
......是一个班级。您可能会说“解析器类可用于解析文本。”
$p = new Parser;
现在,$p
是一个对象。它是Parser
类的实例。
这对static
关键字尤为重要。静态方法和成员属于类,而不属于对象。
class Parser {
public static $type;
public $text;
}
$p1 = new Parser;
$p2 = new Parser;
$p1::$type = 'php';
$p1->text = 'sometext';
$p2->text = 'someothertext';
echo $p2::$type; //echos "php"
echo $p1->text; //echos "sometext"
答案 4 :(得分:0)
你可以从你的问题中移除 php ,但它仍然是一样的。
一个类定义了一个Object,例如
class Person {
}
是一个定义人物对象的类。
当您开始创建类方法和对象方法时,区别变得更加重要
class Person {
function hair_color(color) {
hair_color = color;
}
}
是php中的对象方法,你可以做这样的事情
austin = new Person()
austin -> hair_color("brown")
现在你可以拥有像
这样的东西class Person {
total = 0;
static function total_in_class() {
total++;
}
}
现在这是一个类方法,它会影响同一个类的所有对象
那样austin = new Person();
austin -> total_in_class
tom = new Person();
echo tom->total
现在,如果我的php不那么生锈,那么它应该回显1.这是因为类中的所有对象都受到影响
在ruby中,它看起来如下
class Person
def hair_color(color)
hair_color = color;
end
def self.total_in_class()
total+=1
end
end
类似和相同的概念适用