1.普通内部類
package learn2;
//外部類HelloWorld
public class NeiBuClass {
// 内部類Inner,類Inner在類HelloWorld的内部
public class Inner {
//建立一個内部類方法
public void show() {
System.out.println("welcome to Chain!");
}
}
public static void main(String[] args) {
// 建立外部類對象
NeiBuClass hello = new NeiBuClass();
// 建立内部類對象
Inner i = hello.new Inner();
// 調用内部類對象的方法
i.show();
}
}
package learn2;
//外部類
public class Outer {
//外部類的私有屬性name
private String name = "Mi";
//外部類的成員屬性
int age = 20;
//成員内部類Inner
public class Inner {
String name = "小米";
//内部類中的方法
public void show() {
System.out.println("外部類中的name:" + Outer.this.name);
System.out.println("内部類中的name:" + name);
System.out.println("外部類中的age:" + age);
}
}
//測試成員内部類
public static void main(String[] args) {
//建立外部類的對象
Outer o = new Outer ();
//建立内部類的對象
Inner inn =o.new Inner();
//調用内部類對象的show方法
inn.show();
}
}
2.内部靜态類
package learn2;
//外部類
public class Souter {
private int a = 90;//外部類的私有變量
static int b = 3;//外部類的靜态變量
//内部靜态類
public static class Sinner{
int b = 2;//内部靜态類的變量
public void show() {
System.out.println("通路外部類中的變量b:"+Souter.b);
System.out.println("通路内部類中的變量b:"+b);
}
}
public static void main(String[]args){
Sinner i = new Sinner();//直接建立内部靜态類的對象
i.show();//對内部靜态類中的方法進行調用
}
}
3.方法内部的類
package learn2;
public class MethodInClass {
private String name = "小米";
// 外部類中的show方法
public void show() {
// 定義方法内部類
class MInner {
int score = 83;
public int getScore() {
return score + 10;
}
}
// 建立方法内部類的對象
MInner mi = new MInner();
int newScore = mi.getScore();// 調用内部類的方法
System.out.println("姓名:" + name + "\n加分後的成績:" + newScore);
}
// 測試方法内部類
public static void main(String[] args) {
// 建立外部類的對象
MethodInClass mo = new MethodInClass();
// 調用外部類的方法
mo.show();
}
}