我查看了LinkedList的Java代码,注意到它使用了一个静态嵌套类Entry。
public class LinkedList<E> ... {
...
private static class Entry<E> { ... }
}
为什么要使用静态嵌套类,而不是普通的内部类?
我能想到的唯一原因是,Entry不能访问实例变量,所以从OOP的角度来看,它有更好的封装。
但我想可能还有其他原因,可能是表现。可能是什么?
请注意。我希望我的术语是正确的,我将它称为静态内部类,但我认为这是错误的:http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html
内部类的优势——
一次性使用
支持和改进封装
readibility
私有字段访问
没有外部类的存在,内部类就不存在。
class car{
class wheel{
}
}
内部类有四种类型。
正常的内部类
局部内部类
匿名内部类
静态内部类
点——
from static inner class ,we can only access static member of outer class.
Inside inner class we cananot declare static member .
inorder to invoke normal inner class in static area of outer class.
Outer 0=new Outer();
Outer.Inner i= O.new Inner();
inorder to invoke normal inner class in instance area of outer class.
Inner i=new Inner();
inorder to invoke normal inner class in outside of outer class.
Outer 0=new Outer();
Outer.Inner i= O.new Inner();
inside Inner class This pointer to inner class.
this.member-current inner class
outerclassname.this--outer class
for inner class applicable modifier is -- public,default,
final,abstract,strictfp,+private,protected,static
outer$inner is the name of inner class name.
inner class inside instance method then we can acess static and instance field of outer class.
10.内部类在静态方法中,那么我们只能访问的静态字段
外部类。
class outer{
int x=10;
static int y-20;
public void m1() {
int i=30;
final j=40;
class inner{
public void m2() {
// have accees x,y and j
}
}
}
}