歡迎光臨新長城部落格中心
物件導向
內部類:
將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類(內建類,巢狀類)。簡單的說就是類中還有乙個類,就是內部類。
位元組碼檔名:外部類名$內部類名.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 interpublic class test
public voidshow2()
});
}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 的。...