編程中構(gòu)造函數(shù)與方法的區(qū)別
計(jì)算機(jī)編程有很多專(zhuān)業(yè)的術(shù)語(yǔ),如構(gòu)造函數(shù),有人會(huì)說(shuō)構(gòu)造函數(shù)不是編程方法嗎?其實(shí)這兩者還是有些區(qū)別的,下面小編告訴你。
構(gòu)造函數(shù)與方法的區(qū)別
1.在C#中,一些都是對(duì)象。你要用一個(gè)對(duì)象,就必須用new來(lái)實(shí)例化類(lèi)(static類(lèi)例外)。當(dāng)你用new命令時(shí),系統(tǒng)就會(huì)自動(dòng)調(diào)用該類(lèi)的構(gòu)造函數(shù),做些初始化之類(lèi)的工作。至于方法,你只能通過(guò)手工方式用"object.method()"的方式調(diào)用。
2.類(lèi)中可以沒(méi)有構(gòu)造函數(shù),因?yàn)闆](méi)有時(shí),系統(tǒng)會(huì)自己幫你生成一個(gè)不帶參量的空的構(gòu)造函數(shù),它什么事都不會(huì)干,只是因?yàn)檎Z(yǔ)法的原因而存在。構(gòu)造函數(shù)是可以重載的(還是過(guò)載了,我也記不清這兩個(gè)概念)。這方法你只能看書(shū)了,java和c#上都有講很多的。
3.堆(stack)和棧(heap)是存儲(chǔ)臨時(shí)數(shù)據(jù)的地方,就是我們說(shuō)的緩存吧。對(duì)象的字柄是存在heap中的,基本類(lèi)型(如int,char等)是存在stack中的。stack的速度比heap快。
4.構(gòu)造函數(shù)就是構(gòu)造方法,有的地方也叫做構(gòu)造器。構(gòu)造函數(shù)名與類(lèi)名相同,方法是自定義的。構(gòu)造方法是一種特殊的方法,作用是初始化成員變量。
5.構(gòu)造函數(shù)就是一類(lèi)特殊的方法。 他不同于其他方法的地方
一、創(chuàng)建對(duì)象時(shí)構(gòu)造函數(shù)自動(dòng)運(yùn)行,而一般方法必須有調(diào)用語(yǔ)句調(diào)用才能執(zhí)行
二、構(gòu)造函數(shù)與類(lèi)名必須相同(含大小寫(xiě))
三、構(gòu)造函數(shù)不能有返回值類(lèi)型
例如
class A
{
public A(){ }//構(gòu)造函數(shù)名與類(lèi)名相同,沒(méi)有返回值類(lèi)型
public string B(){ ...;return "str";}
//普通方法要有返回值類(lèi)型,如無(wú)返回值必須寫(xiě)void
}
A aa=new A();
//創(chuàng)建對(duì)象aa的時(shí)候會(huì)自動(dòng)運(yùn)行類(lèi)a的構(gòu)造函數(shù)A()
aa.B();
//普通方法B只能遇到調(diào)用他的語(yǔ)句才會(huì)被執(zhí)行
小編推薦:JAVA構(gòu)造函數(shù)例子
public class UserManagerImpl implements UserManager {
private UserDao userDao;
public UserManagerImpl(UserDao userDao){
this.userDao=userDao;
}
public void save(String username,String password){
this.userDao.save(username, password);
}
}