本文的部分知识点源于张老师的《Java就业培训教程》。
内部类是可以访问和引用它的外部类的所有变量和方法,反过来就不成立了。内部类的成员只有在内部类的范围内是可知的,并不能被外部类使用,和外部类不同的是内部类可以声明为private和protected;
1.为什么要定义内部类?什么情况下需要将一个类定义成内部类?
内部类使得程序代码更为紧凑,程序更具模块化。
当一个类中的程序代码要用到另外一个类的实例对象,而在另一个类的程序代码中又要访问第一个类中的成员,这样将另外一个类做成第一个类的内部类,程序代码就容易多了。
2.内部类如何被外部类引用?
内部类可以通过创建对象从外部类之外被调用,只要将内部类声明为public即可;
如Ourter外部类,Inner内部类其中含有方法doStuff(),通过:
Outer outer = new Outer();
Outter.Inner inner = outer.new Inner();
inner.doStuff();
3.内部类还可以定义在方法中,甚至是for循环体内部;
4.匿名内部类:
内部类可以声明为抽象类或者接口,它可以被另外一个内部类来继承或者实现。内部类可以继承外部类亦可以用final关键字修饰。
eg:需要产生一个类A的匿名子类的实例对象,并传递给callInner方法。写完效果如下:
new Outer().callInner(new A(){
})
在那对大括号中间,增加匿名子类的所有实现代码;