/** * 內部類 ?? * 定義在一個內部的類,被稱為內部類。 * 內部類里有類體,方法體 * 內部類所在的類,被稱為外部類。 * * ①內部類的意義 * 在一定程度上,起到了代碼的有效保護。 * ②語法 * class Outer{////外部類 * 成員變數 * 成員方法 * class In ...
/**
* 內部類 ??
* 定義在一個內部的類,被稱為內部類。
* 內部類里有類體,方法體
* 內部類所在的類,被稱為外部類。
* ---------------------------------
* ①內部類的意義
* 在一定程度上,起到了代碼的有效保護。
* ②語法
* class Outer{////外部類
* 成員變數
* 成員方法
* class Inner{///內部類
* 成員變數
* 成員方法
* }
* }
* ③ 類對象的創建
* //創建外部類對象
* Outer outer =new Outer();
* //創建內部類對象
* Inner inner=new Inner();//這樣創建時錯誤的
* //無法直接創建內部類對象,但是可以通過先創建外部類對象
* 再通過外部類對象創建內部類對象。
* 例如:
* Outer outer=new Outer();
* Outer.Inner inner2=new Outer().new Inner();
* 或
* Outer.Inner inner2=outer.new Inner();
*
* 內部類引用外部類的成員變數
* 兩種情況
* a.外部類的成員變數在內部類中不存在。
* 則內部類中可以直接使用外部類的成員變數名。
* class Outer {
* String name;
* class Inner{
* public void test{
* name="CC";//為外部類的name;
* }
* }
* }
* b.外部類的成員變數在內部類中同時存在,則內部類想要使用外部類的成員變數,
* 必須 外部類名.this.成員變數名
* class Outer{
* String name;
* class Inner{
* String name;
* public void test(){
* name="cc";//為內部類的name;
* Outer.this.name="dd";//此時為外部類的name
* }
* }
* }
*
* @param args
*/
package test05;
public class InnerClass {
public static void main(String[] args) {
// TODO 自動生成的方法存根
Outer outer=new Outer();
outer.name="張三";
outer.age=18;
outer.introduce();
System.out.println("-------------------------------");
Outer.Inner inner=outer.new Inner();
inner.name="李四";
inner.age=20;
inner.introduce();
}
}
class Outer{/////外部類
String name;
int age;
void introduce(){
System.out.println("name"+this.name+"age"+this.age);
}
class Inner{/////內部類
String name;
int age;
void introduce(){
System.out.println("內部類姓名:"+this.name+"內部類年齡:\n"+this.age+"外部類姓名:"+Outer.this.name+"外部類年齡:"+Outer.this.age);
}
}
}