將乙個類定義到另外乙個類中,對裡面那個類就稱為內部類(內建類,巢狀類)。
內部類可以直接訪問外部類中的成員,包括私有成員,之所以可以直接訪問外部類中的成員,是因為內部類中持有乙個外部類的引用,格式:外部類名.this;
外部類要訪問內部類的成員必須要建立內部類的物件。
class outer
}void method()
}class demo
} //x = 6
當內部類定義在外部類的成員位置上,而且非私有,可以在外部其它類中直接建立內部類物件,格式:外部類名.內部類名 變數名 = 外部類物件.內部類物件(outer.inter in = new outer().new inter();)
class outer
}}class outer2
}class demo
}
當內部類在成員位置上,就可以被成員修飾符所修飾:
private :將內部類在外部類中進行封裝;
static:內部類就具備static的特性。當內部類被static修飾後,只能直接訪問外部類中的static成員,出現了訪問許可權。
在外部其他類中,如何直接訪問static內部類的非靜態成員呢?
new outer.inter().function();
class outer
}}class demo
}
在外部其他類中,如何直接訪問static內部類的靜態成員呢?
outer.inter().function();
注意:當內部類中定義了靜態成員,該內部類必須是static的;
當外部類中的靜態方法訪問內部類時,內部類也必須是靜態的。
class outer
}public
static
void
method()//外部類中的靜態方法
}class demo
}
不可以被成員修飾符修飾;
可以直接訪問外部類中的成員(x),因為還持有外部類中的引用,但是不可以訪問他所在的區域性中的變數(y),只能訪問被final修飾的區域性變數(final int y = 6)。
class outer
}new inter().function();//有物件才會執行
}}class demo
}//x = 4
匿名內部類其實就是內部類的簡寫形式;
定義匿名內部類的前提:內部類必須是繼承乙個類或者實現介面;
匿名內部類的格式:new 父類或介面();
其實匿名內部類就是乙個匿名子類物件,而且此物件有點胖,可以理解為帶內容的物件;
匿名內部類中定義的方法最好不要超過3個。
/*class outer
}void method()
}class demo
}//x = 4*/
//上述**可以用匿名內部類重寫
abstract class showdemo
class outer
}.show();
}}public
class
demo
}//x = 4
inte***ce inter
class test
// }
// static inter function()
//
//匿名內部類實現
static inter function()};}
}class demo
}
class demo
代表object的子類物件
//new object(); //代表object物件
new object() //代表object的子類物件
}.function();
}}
JAVA學習筆記10 內部類 匿名內部類
內部類 內部類可以直接訪問外部類成員 包括私有成員 外部類要訪問內部類中的成員必須要建立內部類的物件 class outer public void method 內部類一般用於類的設計 分析事物時 發現該事物描述中還有事物 而且這個事物還在訪問被描述事物的內容 這時就可以將還有的事物用內部類來描述...
JAVA學習 內部類
靜態成員不能訪問非靜態成員。內部類可以訪問外部類private成員,反之不成立。非靜態內部類不能擁有靜態成員。介面內部類預設為public static。子類繼承內部類父類,會自動呼叫非靜態內部類構造器,此時子類構造器必須存在乙個外部類物件。inte ce jiekou abstract class...
Java內部類 Java例項內部類
例項內部類是指沒有用 static 修飾的內部類。示例 如下 public class outer 上述示例中的 inner 類就是例項內部類。例項內部類有如下特點。1 在外部類的靜態方法和外部類以外的其他類中,必須通過外部類的例項建立內部類的例項。public class outer inner1...