问题描述
//关于内部类的总结://为什么使用内部类?//因为内部类可以直接访问内部类的成员变量包括私有的。//1、内部类定义在外部类成员的位置classOut{privateints=9;classIn{//ints=3;publicvoidprint(){System.out.println(s);}}}//成员位置的内部类可以直接访问外部类的成员变量,包括私有。//2、内部类是静态的classOut2{privatestaticints=9;staticclassIn2{publicvoidprint(){System.out.println(s);}}}//静态内部类只能访问外部类静态的成员变量。//3、内部类是私有的classOut3{privatestaticints=9;privateclassIn3{publicvoidprint(){System.out.println(s);}}publicvoidprint1(){newIn3().print();System.out.println("haha");}}//私有内部类不能再外部类之外建立内部类对象,//只能通过外部类方法里面建立内部类对象,从而使用内部类的方法.//4、内部类定义在成员方法内部classOut4{privatestaticints=9;publicvoidprint1(){classIn4{publicvoidprint(){System.out.println(s);}}newIn4().print();System.out.println("haha");}}//用法跟私有内部类基本相似publicclassInClass{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubOut.Inin=newOut().newIn();in.print();Out2.In2in1=newOut2.In2();in1.print();Out3out3=newOut3();out3.print1();Out4out4=newOut4();out4.print1();}}
解决方案
解决方案二:
解决方案三:
虽然内部类有这么那么多使用它的好处的观点支持它的存在但是感觉它破坏了Java的:一个.java对应一个同名.class的基本原则所以感觉大型的项目尽量避免使用为好【没啥理论基础,仅仅是个人喜好,仅供参考】
解决方案四:
内部类所能够应用的地方往往是在事件模型里。
解决方案五:
感觉自己写的程序里面很少存在内部类。。。。只是理论上的罢了,。,,实际中没用过,也只是在看JDK原码的时候遇到过内部类。。
解决方案六:
我个人遇到复杂些的情况,还是用内部类的,但基本不用那些复杂的内部类用法,因为这反而增加了程序的复杂性。java是个崇尚简单的语言。java8出来之前,常见的场景是事件处理程序所用的匿名内部类,这很常见。除此之外,当某个类仅仅在另外一个类的内部使用的时候,就建议用内部类。这也是面向对象封装的体现。这种情况下,内部类也不需要被外部代码访问,情况最简单。若是内部类需要被外部访问的话,那么我会把拿出来,作为单独的类,而非内部类。