PHP - “实例化”和“初始化”的区别是什么?

9

我正在阅读一些关于PHP的书籍,开始学习基础知识。我遇到了“实例化”和“初始化”这两个词。我找不到一个能解释它们的例子。

在PHP中,“实例化”和“初始化”的区别是什么?它们的含义是什么?如何使用它们?使用它们的目的是什么?

如果可能,请提供一个例子。

3个回答

18
你可以从一个类中实例化一个对象,即创建一个实例(因此得名实例化)。代码示例:
$obj = new SomeClass();   

你需要给一个变量初始化,这意味着“给它赋予其初始值(因此得名)”。

$var = "someValue";

事实上,在你实例化时,通常也会在构造函数中进行初始化。例如:
// this instantiates an object of class 'SomeClass' and 
// initialises it with "somevalue"
$obj = new SomeClass("someValue"); 

实例化是面向对象编程的术语。初始化在所有语言中都被使用。这两个术语当然不仅限于PHP。


2
  1. 实例是指你为变量分配了内存,但可能还没有放置值。
  2. 初始化是指你已经分配了内存并将初始值存储在其中。

读完Barts的回答后,只想补充一点,面向对象编程通常将对象分配内存称为实例,而将变量称为初始化,这意味着分配内存并分配了一个值。

例如

int $intarray=new Array(); // Instance created

while

int $intarray= new Array({1,2,3}); // instance created and initialised

2

当你在任何面向对象编程语言中定义一个类时,你创建了一个对象的蓝图,但实际上该对象并不存在。但是,当你根据所定义的类或蓝图创建一个对象的副本时,你实际上实例化了一个类。例如:

// 定义一个名为Foo的类

class Foo {
    public $aMemberVar = 'aMemberVar Member Variable';
    public $aFuncName = 'aMemberFunc';


    function aMemberFunc() {
        print 'Inside `aMemberFunc()`';
    }
}

// 创建一个类型为Foo的对象 * 实例化Foo

$foo = new Foo;

现在来说初始化,考虑任何变量。当你声明一个变量时,它是存在的,但不持有任何有意义的值。因此,第一次为变量赋值的过程被称为初始化。初始化可以在声明变量的时候发生,也可以在以后通过编程方式实现。
只需声明一个变量:
var $newVariable;

初始化上述变量:

$newVariable = "This is intialisation";

声明并初始化一个变量:

var $intialisedVar = "This var is declared and intialised";

在初始化时,补充另一点,请参阅上面的类中的变量。只要您实例化一个对象,这些变量将自动初始化。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接