刚开始使用PHP和一般的OOP。从我迄今为止阅读的内容来看,这两者似乎是同义词。这是否是这种情况,如果不是这样,实际上当人们提到对象和类别时,他们通常会互换使用这些术语吗?PHP中的类和对象是相同的东西吗?
回答
通常,人们将作为类别的实例的对象。
所以你有一些类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类的一个实例。
所以要回答你的问题 - 一个班不是一个对象。您在实例化类时创建一个对象。
对象和类他们通常交替使用的术语?
号和在其他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)
隐喻+1 –
一个类是一个对象的定义。一个对象是一个类的实例。例如:
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"
它们当然不是同义词,如果你一直在阅读,那么是时候改变本书了! :-)
类是类型,而对象是实例。
一个简单的例子是一个整数。 “整数”表示类型,但整数$x
是该类型的一个实例。在PHP中没有一个强大的类型系统,所以这可能不是很明显,但我希望你明白。同样,array
是一种类型,但$v = array();
创建了一个数组类型的实例(称为$v
)。
带班,你不能只是说为你做阵列,相反,你必须使用$y = MyClass();
new
:$y = new MyClass();
。
你可以从你的问题中删除的php,它仍然是一样的东西。
一个类定义对象例如
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.这是因为在类的所有对象都会受到影响
在红宝石它会如下所示
class Person
def hair_color(color)
hair_color = color;
end
def self.total_in_class()
total+=1
end
end
类似和相同的概念适用
- 1. 是“find_all”和“select”相同的东西吗?
- 2. 是否 - >和[],对于php数组都是相同的东西?
- 3. 本地类,内部类和嵌套类在C++中是相同的东西吗?
- 4. 在C++中是别名和引用相同的东西吗?
- 5. PHP中的转义序列和转义字符是相同的东西吗?
- 6. 我们是否有与Golang中的Java和C#对象相同的东西?
- 7. 代码页和代码图是相同的东西吗?
- 8. 表变量和虚表是相同的东西吗?
- 9. “var”和“variant”是同一个东西吗?
- 10. 只有虚拟抽象方法的接口和抽象类是相同的东西吗?
- 11. 在knockoutjs中是对象克隆还是它们引用相同的东西?
- 12. 测试应该是相同的东西
- 13. L2E这两个是相同的东西?
- 14. 在同一类的所有对象中隐藏某些东西
- 15. urn-,url-和uri-encoding都指向相同的东西吗?
- 16. 扔扔东西的对象
- 17. 标量与原始数据类型 - 它们是相同的东西吗?
- 18. 是东西() - >东西总是有效的PHP?这很好用吗?
- 19. 检查clojure中的东西类吗?
- 20. ASP.NET中的PHP CURLFile之类的东西
- 21. ViewPager和Fragments:为什么我总是看到相同的东西?
- 22. nHibernate QueryOver Projects - 是选择和在哪里相同的东西?
- 23. 在mysql中选择类似的值(有些东西,某些东西应该是相同的)
- 24. 是android-priority-job-queue和job scheduler两个不同的东西吗?
- 25. PHP是否if(count($ array))和if($ array)意味着相同的东西?
- 26. PHP如果有东西和东西那么东西?
- 27. PowerShell模块是C#中类的更近的“东西”吗?
- 28. em和百分比是相同的东西,它们是相应的默认值吗?
- 29. Xml写两次相同的东西
- 30. io.write每次打印相同的东西?
@Jared Farrish:相信大家都做;-)我不是在责怪你,我只是试图让所有的事情变得清洁,因为这往往是理念上的误解。 – zerkms
@zerkms - 它发生了。即使是明显的答案也有明显的缺陷。这就是生活。 –