class Outter {
private int a = 10;
class Innner {
public void show() {
System.out.println(a);
}
}
public void show1() {
Innner o = new Innner();
o.show();
}
}
class Demo1 {
public static void main(String[] args) {
Outter o = new Outter();
o.show1();
}
}
內(nèi)部類就是嵌套在外部類里面的一個(gè)類,上面代碼通過(guò)外部類的方法來(lái)創(chuàng)建內(nèi)部類對(duì)象內(nèi)部類對(duì)象進(jìn)行調(diào)用自己的方法,然后通過(guò)創(chuàng)建外部類對(duì)象來(lái)實(shí)現(xiàn)對(duì)內(nèi)部類的方法的調(diào)用。
class Outter {
private int a = 10;
class Innner {
public void show() {
System.out.println(a);
}
}
}
class Demo1 {
public static void main(String[] args) {
Outter.Innner o = new Outter().new Innner();
o.show();
}
}
這種調(diào)用內(nèi)部類來(lái)的更爽快一點(diǎn),直接調(diào)用。
私有化內(nèi)部類。
有人會(huì)問(wèn),既然第二種方式這么爽,為什么還會(huì)有第一種方式?
當(dāng)你的內(nèi)部類的方法是私有時(shí),你可以定義成私有內(nèi)部類,私有的你就無(wú)法訪問(wèn),你直接創(chuàng)建內(nèi)部類訪問(wèn)它就沒(méi)有任何意義,所以你可以使用第一種方式來(lái)實(shí)現(xiàn)。
class Outter {
private class Innner {
public void cut() {
System.out.println("切除你的心臟");
}
}
public void right(String a) {
if (a == "這是壞蛋的心臟") {
Innner i = new Innner();
i.cut();
}
}
}
class Demo1 {
public static void main(String[] args) {
Outter o = new Outter();
o.right("這是壞蛋的心臟");
}
}
一般的內(nèi)部類(成員內(nèi)部類)可以訪問(wèn)外部類的私有變量,但不能訪問(wèn)靜態(tài)的變量要想訪問(wèn)只能再加個(gè)final
靜態(tài)內(nèi)部類里只能存在靜態(tài)變量,直接調(diào)用靜態(tài)內(nèi)部類的形式會(huì)發(fā)生變化:
Outter.Innner o = new Outter.new Innner();