1.内部类:Iterator
2..this生成对外部类的引用
3..new:通过外部类对象创建内部类对象
package com.chengjie; public class TestInnerClass { class Inner { String str() { return "Inner!"; } } public Inner getInner() { return new Inner(); } public static void main(String[] args) { TestInnerClass tic = new TestInnerClass(); TestInnerClass.Inner inner = tic.getInner(); System.out.println(inner.str()); inner = tic.new Inner(); System.out.println(inner.str()); } }
4.通过内部类返回其接口类型时,可以实现内部的完全隐藏
interface Base { } public class TestInnerClass { class Inner implements Base{ String str() { return "Inner!"; } } public Base getInner() { return new Inner(); } }
5.通过匿名内部类实现工厂模式
package com.chengjie; interface Service { void method1(); void method2(); } interface ServiceFactory { Service getService(); } class ServiceImpl1 implements Service { private ServiceImpl1() {} @Override public void method1() { System.out.println("implment1:method1()!"); } @Override public void method2() { System.out.println("implment1:method2()!"); } public static ServiceFactory sf = new ServiceFactory() { @Override public Service getService() { return new ServiceImpl1(); } }; } public class TestFactory { public static void consume(ServiceFactory sf) { Service s = sf.getService(); s.method1(); s.method2(); } public static void main(String[] args) { consume(ServiceImpl1.sf); } }
6.内部类特点:每个内部类可以独立继承一个接口的实现,无论外围类继承与否--有效补充了多重继承
7.内部类不是is-a,而是独立的实体
原文:https://www.cnblogs.com/forTheDream1991/p/10387760.html