目錄
1.內(nèi)部類
2.匿名內(nèi)部類
1.內(nèi)部類
定義:內(nèi)部類(nested classes)晰奖,面向?qū)ο蟪绦蛟O(shè)計(jì)中队腐,可以在一個(gè)類的內(nèi)部定義另一個(gè)類坐儿。嵌套類分為兩種犀斋,即靜態(tài)嵌套類和非靜態(tài)嵌套類悟泵。靜態(tài)嵌套類使用很少,最重要的是非靜態(tài)嵌套類闪水,也即是被稱作為內(nèi)部類(inner)糕非。內(nèi)部類是JAVA語(yǔ)言的主要附加部分蒙具。內(nèi)部類幾乎可以處于一個(gè)類內(nèi)部任何位置,可以與實(shí)例變量處于同一級(jí)朽肥,或處于方法之內(nèi)禁筏,甚至是一個(gè)表達(dá)式的一部分。
簡(jiǎn)述:需要在類的內(nèi)部定義一個(gè)類衡招,這種類就成為內(nèi)部類篱昔。
作用:希望封裝對(duì)應(yīng)的功能,這些功能可能不太希望直接暴露給外部始腾。
Attention:
內(nèi)部類是外部類的一個(gè)成員
內(nèi)部類可以直接訪問(wèn)外部類的數(shù)據(jù)
外部類無(wú)法直接調(diào)用內(nèi)部類的數(shù)據(jù)
內(nèi)部類可以使用private public protected final 來(lái)修飾州刽,外部類只能使用public來(lái)修飾
普通內(nèi)部類-屬于對(duì)象,必須對(duì)象來(lái)調(diào)用
靜態(tài)內(nèi)部類-屬于類浪箭,必須類來(lái)調(diào)用穗椅,靜態(tài)內(nèi)部類無(wú)法調(diào)用非靜態(tài)數(shù)據(jù)
Demo時(shí)刻:
Step1.定義一個(gè)Car類,其中Engine為內(nèi)部類
public class Car {
private int wheels;
public void start(){
wheels = 4;
//內(nèi)部使用內(nèi)部類
Engine engine = new Engine();
}
public static class Engine{
public int a;
public Engine(){
}
}
}
Step2.在MyClass中使用內(nèi)部類
//普通內(nèi)部類
Car bz = new Car();
Car.Engine engine = bz.new Engine();
//靜態(tài)內(nèi)部類
Car.Engine engine = new Car.Engine();
2.匿名內(nèi)部類
在了解匿名內(nèi)部類之前奶栖,我們先來(lái)了解一下匿名對(duì)象
先在主程序中定義Farmer類及其子類MiniFarmer類
class Farmer{
private String name;
public Farmer(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class MiniFarmer extends Farmer{
public MiniFarmer(String name) {
super(name);
}
}
在主程序中創(chuàng)建對(duì)象并執(zhí)行方法
//顯示創(chuàng)建匹表、顯示對(duì)象
//如果需要多次使用這個(gè)對(duì)象
Farmer xw = new Farmer("小王");
buildHouse(xw);
xw.setName("小王plus");
//匿名對(duì)象
//這個(gè)對(duì)象只需要使用一次
buildHouse(new Farmer("張三"));
可以看到:匿名對(duì)象使用與只使用一次的對(duì)象,這種對(duì)象只在使用是創(chuàng)建并使用宣鄙,用完即銷毀袍镀,占用內(nèi)存資源小。
那么什么是匿名內(nèi)部類呢冻晤?
同理
//匿名類
//不顯示創(chuàng)建這個(gè)類
buildHouse(new Farmer("miniFarmer"){
//匿名類的具體實(shí)現(xiàn)
public int salary;
public void showMoney(){
System.out.println(getName() + "的工錢為" + salary);
}
});
這里我們直接創(chuàng)建一個(gè)匿名內(nèi)部類苇羡,并且可以在內(nèi)部對(duì)這個(gè)類進(jìn)行自定義,這個(gè)類也是使用之后就被銷毀鼻弧,類的具體實(shí)現(xiàn)對(duì)后文沒(méi)有任何意義(可有可無(wú))
總結(jié)
1.內(nèi)部類是用于封裝的慣用手法宣虾,可以實(shí)現(xiàn)類的分塊,條理清晰温数;
2.匿名的對(duì)象和類都具有即時(shí)性绣硝,即時(shí)創(chuàng)建即時(shí)使用,使用方便撑刺,對(duì)內(nèi)存友好鹉胖。