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

