近端时间学习think in java的内部类,有点感觉,特总结一下,如有错误,望指点,谢谢!
1. 如要生成内部类,需要先实例化外部类,以层级关系,逐步生成内部类。
2. 内部类如果为static,则无需声明外部类,可以直接调用
3. 接口里面设置static内部类,可以写方法内容,因为static符合interface属性,不会破坏interface规则
4. 要继承内部类,需要特殊的继承方式,详见代码
package thinkinjava;
/**
* Created by wanghao on 14-7-16.
*/
interface Inner {
static class TestInner {
static int i = 1;
public void hello() {
System.out.println("hello");
}
}
}
class InnerInner {
public void innerInner() {
System.out.println("innerInner");
}
class InnerInnerInner {
public void test() {
System.out.println("test");
}
}
static class StaticInnerTest {
public void staticInnerTest() {
System.out.println("staticinnertest");
}
}
}
public class InnerTest extends InnerInner.InnerInnerInner implements Inner {
//继承内部类特殊语法
InnerTest(InnerInner in) {
in.super();
}
public static void main(String[] args) {
//内部类static则无需生成外部实例
InnerInner.StaticInnerTest staticInnerTest = new InnerInner
.StaticInnerTest();
staticInnerTest.staticInnerTest();
//接口内部类,可以写代码
TestInner testInner = new TestInner();
testInner.hello();
//内部类建立准则,层级关系
InnerInner innerInner = new InnerInner();
InnerInner.InnerInnerInner innerInnerInner = innerInner.new
InnerInnerInner();
innerInnerInner.test();
}
}