十三 java物件導向程式設計 初始化A

2021-05-17 18:38:16 字數 4612 閱讀 2976

/*** 初始化(一)

* 成員變數和構造機的初始化過程

* 1,成員變數的初始化:

* 2,構造方法的執行順序:

* 3,靜態成員的執行順序;

* 4,靜態**塊的執行順序;

*//* 一,成員初始化 */

class memberinitialization

/*2,指定初始化*/

//(1),在定義變數的地方初始化.

private boolean bl = true;

private char ch = 'a';

private byte bt = 0;

private short sh = 10;

private int in = 20;

private long lg = 30;

private float fl = 0.0f;

private double dl = 1.0;

private string strg = "string";

private memberinitialization ob = this;

public void printinfo2()

//(2),通過方法初始化

int j = f();

int f()

int x = a();

int y = b();

int a()

int b()

public static void main(string args)

}/*總結: 類中的成員變數將自動初始化,但是方法中定義的變數必須在使用前初始化*/

/* 輸出結果:

boolean   false

char

byte      0

short     0

int       0

long      0

float     0.0

double    0.0

string    null

reference null

boolean   true

char      a

byte      0

short     10

int       20

long      30

float     0.0

double    1.0

string    string

reference memberinitialization@190d11

j = 1 x = 2 y = 4

*//* 二,構造方機初始化 */

/*1,在構造方法中初始化*/

class constructor

public constructor(int mark)

}/*2,初始化的順序*/

class constructorinitialization

private constructor con2 = new constructor(2);//con2定義在構造方法後

public void function()

private constructor con3 = new constructor(3);//con3定義在成員方法function後

public static void main(string args)

}/*3,靜態資料的初始化*/

class staticdata

}class statictest

static staticdata data2 = new staticdata(2);//靜態成員data2定義在構造方法之後,data4之後

public void function()

static staticdata data3 = new staticdata(3);//靜態成員data3定義在構造方法,成員方法,data4之後

public static void main(string args)

}/*4,非靜態**塊的初始化*/

class codetest

//在構造方法之前

codetest()

//在構造方法中

}//在構造方法後

void function()

//在成員方法後

public static void main(string args)

/* 輸出結果:

* code1 is calling...

* code2 is calling...

* code3 is calling...

* codetest()

* code4 is calling...

* function()

* again...

* code1 is calling...

* code2 is calling...

* code3 is calling...

* codetest()

* code4 is calling...

* function()

*///同樣打亂了**塊的順序,我們得到的結論是:

//**塊是在構造方法之前和成員方法呼叫前被呼叫.

}/*5,靜態**塊*/

class staticcodetest

staticcodetest()

}static

void function()

static

public static void main(string args)

/* 輸出結果:

* static code1 is calling...

* static code2 is calling...

* static code3 is calling...

* staticcodetest()

* static code4 is calling...

* function()again...

* staticcodetest()

* static code4 is calling...

* function()

*///同樣,打亂了靜態**塊的順序,我們的結論是:

//同樣靜態**塊是在構造方法之前和成員方法呼叫前被呼叫.但是由於是靜態的,所以只被初始化一次.

}/*6,總結*/

//我們在程式中將所有的成員加進去,看看這個順序

class summarizedata

}public class summarizetest

static //在構造方法之前交叉定義

summarizetest()

}summarizedata data5 = new summarizedata(5);

static summarizedata data2 = new summarizedata(2);

static //在構造方法之後交叉定義

void function()

summarizedata data6 = new summarizedata(6);

static summarizedata data3 = new summarizedata(3);

static //在成員方法之後交叉定義

public static void main(string args)

/* 輸出結果:

* summarizedata(1)

* static code1 is calling...

* summarizedata(2)

* static code2 is calling...

* summarizedata(3)

* static code3 is calling...

* summarizedata(4)

* code1 is calling...

* summarizedata(5)

* code2 is calling...

* summarizedata(6)

* code3 is calling...

* summarizetest()

* summarizedata(7)

* code4 is calling...

* function()

* again...

* summarizedata(4)

* code1 is calling...

* summarizedata(5)

* code2 is calling...

* summarizedata(6)

* code3 is calling...

* summarizetest()

* summarizedata(7)

* code4 is calling...

* function()*/}

/* 通過以上例項我們得出的結論:

* 程式的執行順序是:

* 首先執行靜態成員和靜態**塊(靜態成員變數和靜態**塊按照先後定義的順序執行,並且只執行一次)

* 之後執行成員變數和非靜態**塊(同樣,成員變數和非靜態**塊按照定義的先後順序執行,並且可以執行多次)

* 在次執行構造方法

* 最後執行成員方法

*/

物件導向 物件初始化

類名 alloc 使用nsobject提供的init方法雖然可以完成初始化,但由於它只是完成最基本的初始化,因此物件的所有成員變數依然為0。重寫init方法,可以加入任意的自定義處理 對屬性執行初始化 例 在.h檔案中定義屬性 property nonatomic copy nsstring nam...

java物件初始化過程

假設有一下類 class test test int n 0 我們知道,任何物件在使用前都會被初始化,方法裡面的區域性變數必須給初始化值才能通過編譯。現在我們來討論一下初始化的過程 對於字段 變數 而言,如果是基本型別,那麼即使不給初始值,都會得到jvm預設的初始值 boolean預設是false,...

物件導向(二)初始化方法

初始化方法 類名 就可以建立乙個物件 類名 建立物件的時候,python直譯器會自動執行以下操作 為物件在記憶體中分配空間 建立物件 呼叫初始化方法為物件的屬性設定初始值 這個初始化方法是內建方法,是專門用來定義乙個類據有哪些屬性和方法的 class cat def init self,name s...