new 一个模板、类_Java必备基础-类(Class)
你好,我是goldsunC
讓我們一起進(jìn)步吧!
類
上一篇文章介紹了Java的基礎(chǔ)數(shù)據(jù)類型和引用數(shù)據(jù)類型中的數(shù)組,引用數(shù)據(jù)類型除了數(shù)組之外,還包括類和接口。
那什么是引用數(shù)據(jù)類型呢?看個(gè)例子:
相信不少同學(xué)看到這兒就已經(jīng)明白了,上面程序首先定義了一個(gè)整型數(shù)組a,初始化為1,2,3。然后讓數(shù)組b等于a,再讓a的第一個(gè)元素改為0,分別打印a和b,發(fā)現(xiàn)a和b一模一樣。
對,我們沒有對b直接進(jìn)行操作,但是b也變了。下面簡單說下基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的區(qū)別。
基本數(shù)據(jù)類型
基本數(shù)據(jù)類型在被創(chuàng)建時(shí),在棧上給其劃分一塊內(nèi)存,其數(shù)值直接存儲(chǔ)在棧(Stack)上,每一個(gè)基本數(shù)據(jù)類型都有自己相應(yīng)的棧空間,當(dāng)把一個(gè)基本數(shù)據(jù)類型賦給另一個(gè)基本數(shù)據(jù)類型時(shí),只是把棧里面的值賦給了它,新的那個(gè)基本數(shù)據(jù)類型會(huì)在棧上重新開辟一塊空間,兩個(gè)數(shù)據(jù)并不相同。
引用數(shù)據(jù)類型
引用數(shù)據(jù)類型在被創(chuàng)建時(shí),首先要在棧上給其引用(也就相當(dāng)于上面程序中的a和b)分配一塊內(nèi)存,而兩個(gè)引用指向的對象具體信息都存儲(chǔ)在堆上,只不過是有棧上面的引用指向了堆中對象實(shí)體的地址。
類的定義
Java是一門完全面向?qū)ο蟮恼Z言,寫Java程序主要就是定義各種類。類是現(xiàn)實(shí)時(shí)間中各種對象的抽象,它表明對象的屬性及行為。在程序中,對象的屬性用變量來表示,對象的行為用函數(shù)表示。類中的變量稱為字段或者域(field)。類中的函數(shù)稱為方法。
一個(gè)類的定義從class關(guān)鍵詞開始,關(guān)鍵詞后跟著類的類名,如下:
class IMCLASS{; }在類里面應(yīng)包括字段和方法,一個(gè)類中可以定義多個(gè)字段和方法。
構(gòu)造方法
在程序中經(jīng)常需要?jiǎng)?chuàng)建對象,在創(chuàng)建對象的同時(shí)將會(huì)調(diào)用這個(gè)對象的構(gòu)造方法來完成對象的初始化。
- 構(gòu)造方法:這是一種特殊的、與類同名的方法,只用于對象的初始化工作,構(gòu)造方法主要有以下幾點(diǎn)不同于其它方法的特點(diǎn):
- 構(gòu)造方法的方法名一定與類名相同。
- 構(gòu)造方法沒有返回值,定義時(shí)也不能寫void。
- 構(gòu)造方法的作用就是完成對象的初始化。
- 構(gòu)造方法和其它方法調(diào)用方法不同,若需調(diào)用應(yīng)用new,即創(chuàng)建一個(gè)對象。
- 在創(chuàng)建一個(gè)類的實(shí)例時(shí),系統(tǒng)自動(dòng)調(diào)用類的構(gòu)造方法。
如下一個(gè)示例:
class goldsun{String name;int age;goldsun(String name,int age){this.name = name;this.age = age;} }如上程序定義了一個(gè)類goldsun,其構(gòu)造方法名也是goldsun,括號(hào)內(nèi)是在創(chuàng)建類對象時(shí)應(yīng)該傳入的參數(shù)。
如果想創(chuàng)建一個(gè)如上類的對象,應(yīng)該這樣:
默認(rèn)構(gòu)造方法
一般情況下,類都有一個(gè)或者多個(gè)構(gòu)造方法,而在定義類的時(shí)候也不一定非要定義構(gòu)造方法,如果在定義類的時(shí)候沒有定義構(gòu)造方法,那么系統(tǒng)會(huì)自動(dòng)為這個(gè)類產(chǎn)生一個(gè)構(gòu)造方法,稱為默認(rèn)構(gòu)造方法(default constructor)。
例如如果上面定義的類goldsun沒有定義構(gòu)造方法的話,系統(tǒng)會(huì)默認(rèn)產(chǎn)生一個(gè)如下的構(gòu)造方法:
對,沒有參數(shù),也沒有方法體。
而如果類前面有public修飾符的話,默認(rèn)構(gòu)造方法前面也會(huì)是public的。
使用類
定義類就是為了使用,要想創(chuàng)建類對象需要先聲明,聲明一個(gè)對象的方式與聲明基本數(shù)據(jù)類型的變量類似,其格式如下:類名 變量名;
給類分配內(nèi)存需要用到new運(yùn)算符,格式如下:變量名 = new 構(gòu)造方法(參數(shù));
而以上兩句也可以合寫成一句話:類名 變量名 = new 構(gòu)造方法(參數(shù));
如:goldsun C = new goldsun('CKN',20);new是新建運(yùn)算符,它以類為模板,開辟內(nèi)存空間并執(zhí)行相應(yīng)的構(gòu)造方法。new用來實(shí)例化一個(gè)對象,返回的是該實(shí)例對象的一個(gè)引用,引用指向該對象實(shí)體的內(nèi)存地址。因此上例中把a(bǔ)賦給b,只是把a(bǔ)指向的地址賦給了b,那b和a就指向了同一個(gè)對象,而a和b它們倆并不是一個(gè)東西。
構(gòu)造方法重載
構(gòu)造方法也可以重載,要求使用不同的參數(shù)個(gè)數(shù)、不同的參數(shù)類型、不同的參數(shù)類型順序。構(gòu)造方法的重載,使得用戶可以使用不同的參數(shù)來實(shí)例化對象。如下:
goldsun(String name,int age){this.name = name;this.age = age; } goldsun(String name){this.name = name;this.age = 0; }前一個(gè)構(gòu)造方法帶有姓名年齡信息,而后一個(gè)構(gòu)造方法有姓名信息,年齡信息默認(rèn)為0。
在實(shí)例化對象的時(shí)候,系統(tǒng)根據(jù)傳入的參數(shù)自動(dòng)選擇相應(yīng)的構(gòu)造方法。
this的使用
在類中,有一個(gè)關(guān)鍵詞this,它沒有什么特別意義,它唯一的意義是指這個(gè)實(shí)例對象本身,不管它怎么被使用,只要看見它理解成這個(gè)對象本身就行。它有一些作用:
- 使用this來訪問字段和方法:在類中,可以通過使用this來訪問類中的字段和方法,如下:
- 使用this解決局部變量或參數(shù)變量與字段變量同名的問題,如上例中的this.name = name;,就是這個(gè)問題。
- 在構(gòu)造方法中,使用this調(diào)用另一構(gòu)造方法。
如:
- 如果在構(gòu)造方法中調(diào)用另一構(gòu)造方法,則這條調(diào)用語句必須放在第一句。
實(shí)話實(shí)說,對你是不是很簡單的知識(shí)點(diǎn)?
關(guān)于類還有很多很多復(fù)雜的問題,如繼承、類對象轉(zhuǎn)換、抽象類、匿名類、內(nèi)部類等等等等,除了類,接口也是引用數(shù)據(jù)類型,這些以后再寫。感謝閱讀。
總結(jié)
以上是生活随笔為你收集整理的new 一个模板、类_Java必备基础-类(Class)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行为类模式(二):命令(Command)
- 下一篇: Javascript 获取和设置日期