Java物件導向 匿名 內部類

2021-06-20 12:56:34 字數 3604 閱讀 3060

歡迎光臨新長城部落格中心

物件導向

內部類:

將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類(內建類,巢狀類)。

簡單的說就是類中還有乙個類,就是內部類。

位元組碼檔名:外部類名$內部類名.class

內部類訪問特點:

1、內部類可以直接訪問外部類中的成員,包括私有成員。

2、而外部類要訪問內部類中的成員必須要建立內部類的物件。

一般用於類的設計。

分析事物時,發現該事物描述中還有事物,而且這個事物還在訪問被描述事物的內容。

這時就是還有的事物定義成內部類來描述。

直接訪問外部類中的內部類中的成員(非靜態內部類)。

外部類名.內部類名 =new外部類物件.new內部類物件;

outer.inner in =new outer().new inner();

in.method();

如果內部類是靜態的。 相當於乙個外部類(成員)。

外部類名.內部類名 =

new外部類物件.內部類;

outer.inner in = new outer.inner();

in.method();

如果內部類是靜態的,成員是靜態的。

外部類名.內部類名.靜態函式名;

outer.inner.function();

注:如果內部類中定義了靜態成員,該內部類也必須是靜態的。

為什麼內部類能直接訪問外部類中成員呢?

那是因為內部類持有了外部類的引用。  外部類名.

this

內部類可以存放在區域性位置上。(也就是定義在外部類的成員函式裡面,主函式也是函式哦)

內部類在區域性位置上只能訪問區域性中被

final修飾的區域性變數。

class 

outer

public void

method()

public static void 

show()

}

public

void

method()

public 

innter getinnterinstance()

public static

outer 

getouterinstance()

}

public class

test

}

/*s

*/

匿名內部類:

匿名內部類。就是內部類的簡寫格式。

其實匿名內部類就是乙個匿名子類物件,而且這個物件有點胖,也可以理解為,帶內容的物件。

必須有前

提:內部類必須繼承或者實現乙個外部類或者介面。(因為內部類是用父類的名字建立物件)

匿名內部類

:其實就是乙個匿名子類物件。

匿名內部類格式

new父類或者(or)介面()

通常的使用場景之一:

當函式引數是介面型別時,而且介面中的方法不超過三個。

可以用匿名內部類作為實際引數進行傳遞。

匿名內部類應用:

/*定義乙個介面, 2個抽象方法(

method two

)*/

inte***ce inter  

public class test  

public void 

show2()

});

}

public static void show(inter in)

}

內部類 匿名內部類注意之細節:

abstract class

inner

public class test 

}代表是的inner類的子類物件,並對父類的方法進行了複寫。

*/

class innertestextends inner 

}

/*由於主函式呼叫非靜態方法,所以只能建立物件。

*/public static void

main(string args) 

}

建立object的子類物件,但是object類中的沒有show方法,所以編譯失敗。多型看的是引用型變數物件中是否有對應的方法。

*/

}

/*返回內部類物件。

*/public inner method()

}

/*思考這條**思考了一小時,更加對匿名內部類 和內部了有了更深一層的了解,知道了其中的細節。更加理解了什麼叫深思熟濾。

*/

Java物件導向 匿名內部類

匿名內部類,指的是例項化內部物件 就是沒有名字的內部類 作用 假如某個類只使用一次,則可以使用匿名內部類 先定義乙個介面a package m12d27 public inte ce a定義乙個類b package m12d27 public class b implements a 測試類 pac...

java物件導向(內部類)

內部類 將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類,巢狀類 訪問特點 1,內部類可以直接訪問外部類中的成員,包括私有成員.2,而外部類要訪問內部類中的成員必須要建立內部類的物件.內部類的訪問規則 1,內部類可以直接訪問外部類的成員,包括私有.之所可以直接訪問外部類中的成員,是因為...

JAVA匿名內部類

abstract class base public abstract void f public class anonymousconstructor public void f public static void main string args 在此例中,不要求變數i 一定是final 的。...