java類的組成結(jié)構(gòu)詳解
成員變量
成員變量便是在類中定義的變量。
例如這樣:
public class POP { int a = 1; }
而成員變量又分為兩種,一種是被static所修飾的類變量,他歸類所有,一種是沒(méi)有被static修飾的實(shí)例變量,他歸對(duì)象所有。
如下:
public class POP { int a = 1; static int b = 1; }
正如字面上的意思,歸類所有的變量b,他能在類的外部,直接通過(guò)POP.b的形式進(jìn)行操作。
如下程序:
public static void main(String[] args) { POP.b++; System.out.println(POP.b); }
但是,在實(shí)際使用中,我們也可以通過(guò)對(duì)象.b的形式來(lái)調(diào)用他。
如下:
public static void main(String[] args) { POP.b++; System.out.println(POP.b); System.out.println(new POP().b); }
這是java很不好的一個(gè)缺陷,因?yàn)檫@個(gè)變量b,實(shí)際上是屬于類的,雖然能用對(duì)象來(lái)調(diào)用,但不建議。
再理解一下這個(gè)變量b只有一份,如下程序:
public static void main(String[] args) { POP.b++; System.out.println(POP.b); System.out.println(new POP().b++); System.out.println(new POP().b++); }
你會(huì)發(fā)現(xiàn),盡管我使用不同的對(duì)象去對(duì)b進(jìn)行操作,但是他們的操作卻共同作用在了同一個(gè)b上,這也是我為什么不建議使用對(duì)象來(lái)調(diào)用類變量。
成員變量可以被四種權(quán)限修飾符修飾,以適應(yīng)各種適用情形。
成員變量可以被final修飾,作為常量。
成員變量也可以被我上面提到的static修飾。
附上總代碼:
public class POP { public static void main(String[] args) { POP.b++; System.out.println(POP.b); System.out.println(new POP().b++); System.out.println(new POP().b++); } int a = 1; static int b = 1; }
方法
方法按照被static修飾分為實(shí)例方法以及類方法。
public void get(){ } public static void did(){ }
需要注意的是,實(shí)例方法可以調(diào)用類變量,而類方法不可以調(diào)用實(shí)例變量,為什么呢?
我們可以思考一下,類方法是為類所有的,實(shí)例方法是由對(duì)象所有的。
類存在的時(shí)候,對(duì)象不一定被創(chuàng)建了,如果這時(shí)候通過(guò)類方法來(lái)調(diào)用實(shí)例變量,此實(shí)例變量不存在,因此,這是不可取的。
方法可以被四種權(quán)限修飾符修飾。
方法可以被static修飾。
方法可以被final修飾,表示不能被子類重寫(xiě)。
方法可以被abstract修飾,表示這為一個(gè)抽象方法,而只要有一個(gè)抽象方法,那該類就是一個(gè)抽象類。
關(guān)于抽象類的內(nèi)容以后再談。
構(gòu)造器
構(gòu)造器,用于創(chuàng)建對(duì)象。
可以被四種權(quán)限修飾符修飾。
protected POP(){ } POP(int a){ }
我們可以通過(guò)this.POP(形參列表)的形式,來(lái)在構(gòu)造器里面調(diào)用其他構(gòu)造器,注意,這種方式,必須寫(xiě)在方法體的最上部分,并且,如果沒(méi)有寫(xiě)this,那么java會(huì)默認(rèn)用super來(lái)調(diào)用父類的空參構(gòu)造器,這也是為什么我們建議設(shè)計(jì)程序的時(shí)候
總是留一個(gè)空參構(gòu)造器。
那么,我們?yōu)槭裁匆谝粋€(gè)構(gòu)造器里面通過(guò)this調(diào)用另一個(gè)構(gòu)造器呢?
因?yàn)檫@樣能減少代碼的重復(fù),方便我們迭代升級(jí)。
另外注意,構(gòu)造器是沒(méi)有返回值的,當(dāng)然你也可以說(shuō)他的返回值就是他所創(chuàng)建的對(duì)象,不過(guò)我們不能顯示的指明。
代碼塊
代碼塊分為實(shí)例代碼塊和類代碼塊。
{ System.out.println("實(shí)例代碼塊"); } static{ System.out.println("類代碼塊"); }
類代碼塊屬于類,在類的加載的時(shí)候就會(huì)執(zhí)行,而實(shí)例代碼塊在對(duì)象的創(chuàng)建的時(shí)候會(huì)執(zhí)行。
到此這篇關(guān)于java類的組成結(jié)構(gòu)詳解的文章就介紹到這了,更多相關(guān)java類組成結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring實(shí)戰(zhàn)之使用Expression接口進(jìn)行表達(dá)式求值操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之使用Expression接口進(jìn)行表達(dá)式求值操作,結(jié)合實(shí)例形式分析了Spring操作Expression接口實(shí)現(xiàn)表達(dá)式運(yùn)算的操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2019-12-12springboot遠(yuǎn)程執(zhí)行服務(wù)器指令
這篇文章主要介紹了springboot遠(yuǎn)程執(zhí)行服務(wù)器指令,本例是java遠(yuǎn)程連接到服務(wù)器,去抓取查詢kubesphere中的etcd日志,并返回,需要的朋友可以參考下2023-09-09

Java IO流和文件操作實(shí)現(xiàn)過(guò)程解析

SpringBoot使用Spring Test進(jìn)行集成測(cè)試的流程步驟

logback的isDebugEnabled日志配置級(jí)別源碼解析

Spring創(chuàng)建Bean的過(guò)程Debug的詳細(xì)流程