1.靜態內部類:
1.必須以static關鍵字標註
2.只能訪問外部類中的靜態的成員變量或者是靜態的方法
3.訪問一個內部類使應該這樣outerClass.innerClass inter = new outerClass.innerClass();不能直接實例化內部類
2.成員內部類:
1.定義在一個類的內部,但是沒有static關鍵字修飾
2.生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass()
3.對外部類變量的引用outClass.this.variale
4.可以訪問外部類的靜態與非靜態方法
3.局部內部類:
1.局部內部類指的是定義在一個方法中的類
2.只有在當前方法中才能對局部內部類裏面的方法以及變量進行訪問
3.局部內部類只能訪問其所在方法的final類型變量
4.匿名內部類:
隱式的繼承一個父類或者是實現某個接口
舉例說明:
1.
package tp85.innerClass;
public class StaticDemo
{
public static void main(String[] args)
{
BB.AA ba = new BB.AA();
ba.put();
}
}
class BB
{
int a = 1;
static int b = 2;
static class AA
{
void put()
{
System.out.println("helloword");
//只能訪問其外部類的static變量
//System.out.println(a);
System.out.println(b);
}
}
}
2.
package tp85.innerClass;
public class MenberDemo
{
public static void main(String[] args)
{
//成員內部類的實例化比較特殊,如下所示
DD.CC dc = new DD().new CC();
dc.put();
}
}
class DD
{
int a = 1;
static int b = 2;
class CC
{
void put()
{
System.out.println("helloword");
//能訪問其外部類的static變量或者是非靜態的變量
System.out.println(a);
System.out.println(b);
}
}
}
3.
package tp85.innerClass;
public class PartDemo
{
public static void main(String[] args)
{
FF ff = new FF();
ff.put();
}
}
class FF
{
void put()
{
//只能是final類型的
final int b = 2;
class EE
{
int a = 1;
void print()
{
System.out.println("print");
System.out.println(b);
}
}
new EE().print();// 只有在同一方法下才能實例化此類型的內部類
}
}
4.
package tp85.innerClass;
public class StaticDemo
{
public static void main(String[] args)
{
BB.AA ba = new BB.AA();
ba.put();
}
}
class BB
{
int a = 1;
static int b = 2;
static class AA
{
void put()
{
System.out.println("helloword");
//只能訪問其外部類的static變量
//System.out.println(a);
System.out.println(b);
}
}
}