什么是構造函數
構造函數(constructor)是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。構造函數的功能主要用于在類的對象創建時定義初始化的狀態。
什么叫構造函數
構造函數 - 簡介
構造函數 是一種特殊的方法 主要用來在創建對象時初始化對象 即為對象成員變量賦初始值
總與new運算符一起使用在創建對象的語句中 特別的一個類可以有多個構造函數 可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載
構造函數 - 構造函數與其他方法的區別
1.構造函數的命名必須和類名完全相同;而一般方法則不能和類名相同.
2.構造函數的功能主要用于在類的對象創建時定義初始化的狀態.它沒有返回值,也不能用void來修飾.這就保證了它不僅什么也不用自動返回,而且根本不能有任何選擇.而其他方法都有返回值.即使是void返回值,盡管方法體本身不會自動返回什么,但仍然可以讓它返回一些東西,而這些東西可能是不安全的.
3.構造函數不能被直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法在程序執行到它的時候被調用.
4.當定義一個類的時候,通常情況下都會顯示該類的構造函數,并在函數中指定初始化的工作也可省略,不過Java編譯器會提供一個默認的構造函數.此默認構造函數是不帶參數的.而一般方法不存在這一特點
5當一個類只定義了私有的構造函數,將無法通過new關鍵字來創建其對象,當一個類沒有定義任何構造函數,C#編譯器會為其自動生成一個默認的無參的構造函數。
構造函數 - C++中的構造函數
C++的構造函數定義格式為: 構造函數
class
{
public:
(參數表)
//...(還可以聲明其它成員函數)
};
::(參數表)
{
//函數體
}
如以下定義是合法的:
class T
{
public:
T(int a=0){i=a;}//構造函數允許直接寫在類定義內,也允許有參數表。
private:int i;
};
當程序中沒有析構函數時,系統會自動生成以下構造函數:
::(){},即不執行任何操作。
構造函數 - C++例子
//注意若將本代碼直接復制進編譯器,可能會報錯,原因是網頁生成時會在代碼前加一個中文占位符
//最好將代碼再寫一次
#include
using namespace std;
class time
{
public:
time() //constructor.構造函數
{
hour=0;
minute=0;
c=0;
}
void t_time();
void show_time();
private:
int hour;
int minute;
int c;
};
int main()
{
class time t1;
t1.show_time();
t1.t_time();
t1.show_time();
return 0;
}
void time::t_time()
{
cin >>hour;
cin >>minute;
cin >>c;
}
void time::show_time()
{ cout<}
程序運行情況:
0:0:0
10 11 11 回車
10:11:11
任何時候,只要創建類或結構,就會調用它的構造函數。類或結構可能有多個接受不同參數的構造函數。構造函數使得程序員可設置默認值、限制實例化以及編寫靈活且便于閱讀的代碼。
JAVA示例代碼:
public class UrManagerImpl implements UrManager {
private UrDao urDao;
public UrManagerImpl(UrDao urDao){
this.urDao=urDao;
}
public void save(String urname,String password){
this.urDao.save(urname, password);
}
}
PHP中的構造函數
構造函數的聲明與其它操作的聲明一樣,只是其名稱必須是兩個下劃線__construct( )。這是PHP5中的變化;PHP4的版本中,構造函數的名稱必須與類名相同。為了向下兼容,如果一個類中沒有名為__construct( )的方法,PHP將搜索一個與類名相同的方法。
格式:function __construct ( [參數] ) { ... ... }
例子:
class person{
public $name;
public $age;
function _ _construct(){ // 構造函數
$this->name="lisi";
$this->age=28;
}
function say(){
echo "my name is ".$this->name."
";
echo "my age is ".$this->age."
";
}
}
$per=new person();
$per->say();
$per->name="zhangsan";
$per->age=26;
$per->say();
?>
C#例子
構造函數是在創建給定類型的對象時執行的類方法。構造函數具有與類相同的名稱,它通常初始化新對象的數據成員。
在下面的示例中,使用一個簡單的構造函數定義了名為 Taxi 的類。然后使用 new 運算符來實例化該類。在為新對象分配內存之后,new 運算符立即調用 Taxi 構造函數。
public class Taxi{ public bool isInitialized; public Taxi() { isInitialized = true; }}class TestTaxi{ static void Main() { Taxi t = new Taxi(); System.Console.WriteLine(t.isInitialized); }}
什么是構造函數
簡單地說構造函數是類函數,函數名與類名完全相同,無返回值
構造函數屬于類的成員函數,除了具有一般成員函數的特點外,還具有自己的特點:
(1)是類的一個特殊的成員函數,函數名與類名相同;
(2)訪問屬性應該是public;
(3)功能是初始化對象,在構造函數中一般不作初始化以外的事情;
(4)可以在類內定義,也可在類外定義;
(5)無函數返回類型,注意:什么也不寫,也不可寫為void;
(6)程序運行時,當對象被創建后,該對象所屬的類的構造函數自動被調用,在該對象生存期中也只調用這一次;
(7)可以重載
構造函數
function 函數名 () {
this.屬性名 = "";
this.方法名 = function (){
函數體;
}
}
var p = new 函數名 ();
p.方法名();//可調用此方法;
//注意:在構造函數里所有的屬性和方法皆用this.來書寫
構造函數必須通過new關鍵字來創建,如:
var p = new 函數名("值一","值二","值三")
注意:括號中的值可以是常量,也可以是變量
構造函數與普通函數之間就調用的方式不同
構造函數通過new關鍵字來調用,普通函數則可以直接調用
普通函數是遵循小駝峰命名法,即第一個單詞首字母小寫,其余單詞首字母大寫;
構造函數則是所有單詞首字母都為大寫
1) 首先要創建一個對象,對象類型就是這個構造函數的名字
2) 最后會把創建好的這個對象自動返回
3) 注意:var p = new 函數名(); 此時的p就已經是一個對象了
4) 調用通過構造函數創建好的對象中的某個屬性,格式為: p.屬性名; 或 p.方法名();
1) 在構造函數中,this指代的就是創建的這個對象
這也是為什么在構造函數中要使用this.屬性名來書寫了
2) 在對象中,屬性和方法的書寫格式為: 屬性名 : "值"; 或 方法名 : function (){}; //屬性與屬性或方法與方法之間
都以,隔開
在構造函數中,書寫格式為: this.屬性名 = "值"; 或 this.方法名 = function (){}; //每個屬性之間以;隔開
構造函數作用是什么
構造函數的作用是在創建對象時進行初始化工作,最常見的就是對成員變量賦值。構造函數是一種特殊的成員函數,它的名字和類名相同,沒有返回值,不需要用戶調用,而是在創建對象時自動執行。
構造函數的作用就是用來實例化的,打個比方:就是將畫在圖紙上的高樓模型變成真實的建筑。在這個例子中this指的就是point。它用來區分是point的x還是傳進來的x(也就是括號里的x)。
拓展資料:
構造函數的功能主要用于在類的對象創建時定義初始化的狀態。它沒有返回值,也不能用void來修飾。這就保證了它不僅什么也不用自動返回,而且根本不能有任何選擇。
構造函數與普通函數的區別
構造函數與普通函數的區別:
1. 返回值類型的區別:
1. 構造函數是沒有返回值類型 的,
2. 普通函數是有返回值類型的,即使函數沒有返回值,返回值類型也要寫上void。
2. 函數名的區別:
1. 構造函數的函數名必須要與類名一致,
2. 普通函數的函數名只要符合標識符的命名規則即可。
3. 調用方式的區別:
1. 構造函數是 在創建對象的時候由jvm調用的。
2. 普通函數是由我們使用對象調用的,一個對象可以對象多次普通 的函數,
4. 作用上的區別:
1. 構造函數 的作用用于初始化一個對象。
2. 普通函數是用于描述一類事物的公共行為的。