资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
Java语言基础:内部类内部类,计算机面向对象程序设计概念。向对象程序设计中,可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型,即静态嵌套类和非静态嵌套类。内部类,计算机面向对象程序设计概念。向对象程序设计中,可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。1. 普通内部类普通内部类的一个最简单的例子:1. /外部类 2. classOutterClass 3. /内部类 4. publicclassInnerClass 5. privateinti=0; 6. publicintgetInt() 7. returni; 8. 9. 10. publicvoidproc() 11. InnerClassinClass=newInnerClass(); 12. System.out.println(inClass.getInt(); 13. 14. 15. 16. publicclassMain 17. publicstaticvoidmain(Stringargs) 18. OutterClassoutClass=newOutterClass(); 19. outClass.proc(); 20. 21. 外部类可以访问内部类的私有成员,内部类也可以访问外部类的私有成员:22. /外部类 23. classOutterClass 24. privateintmOut=10; 25. /内部类 26. publicclassInnerClass 27. privateintmIn=0; 28. publicvoidprintOutPrivate() 29. /直接打印外部类的成员 30. System.out.println(mOut); 31. 32. 33. publicvoidprintInPrivate() 34. InnerClassinClass=newInnerClass(); 35. /直接打印内部类的私有成员 36. System.out.println(inClass.mIn); 37. 38. publicvoidprintOutPrivate() 39. InnerClassinClass=newInnerClass(); 40. inClass.printOutPrivate(); 41. 42. 43. 44. publicclassMain 45. publicstaticvoidmain(Stringargs) 46. OutterClassoutClass=newOutterClass(); 47. outClass.printInPrivate(); 48. outClass.printOutPrivate(); 49. 50. 如果外部类的成员变量与内部类的成员变量名字相同,当内部类要访问外部类的该成员时,可以使用“OutClass.this.mem”来区分:51. /外部类 52. classOutterClass 53. privateintmMem=10; 54. /内部类 55. publicclassInnerClass 56. privateintmMem=0; 57. publicvoidprintOutPrivate() 58. /直接打印外部类的成员 59. System.out.println(OutterClass.this.mMem); 60. 61. 62. 要创建普通内部类,必须先创建相应的外部类:63. /外部类 64. classOutterClass 65. privateintmMem=10; 66. /内部类 67. publicclassInnerClass 68. privateintmMem=0; 69. publicvoidprintOutPrivate() 70. /直接打印外部类的成员 71. System.out.println(OutterClass.this.mMem); 72. 73. 74. 75. 76. publicclassMain 77. publicstaticvoidmain(Stringargs) 78. OutterClassoutClass=newOutterClass(); 79. OutterClass.InnerClassinClass=outClass.newInnerClass(); 80. inClass.printOutPrivate(); 81. 82. 也可以用下面的方式:83. /外部类 84. classOutterClass 85. privateintmMem=10; 86. /内部类 87. publicclassInnerClass 88. privateintmMem=0; 89. publicvoidprintOutPrivate() 90. /直接打印外部类的成员 91. System.out.println(OutterClass.this.mMem); 92. 93. 94. publicInnerClassnewInnerClass() 95. returnnewInnerClass(); 96. 97. 98. 99. publicclassMain 100. publicstaticvoidmain(Stringargs) 101. OutterClassoutClass=newOutterClass(); 102. OutterClass.InnerClassinClass=outClass.newInnerClass(); 103. inClass.printOutPrivate(); 104. 105. 2. 静态内部类普通内部类前面加上static修饰符,就成为静态内部类,静态内部类类似于C+的嵌套类,与普通内部类相比有如下区别:静态内部类没有指向外部类的引用,外部类对于它来说更像一个名字空间。普通内部类不能有静态成员,静态方法,或另一个静态内部类;而静态内部类可以有这一切。静态内部类可以直接创建,不必先创建外部类:106. /外部类 107. classOutterClass 108. privateintmMem=0; 109. /静态内部类 110. staticpublicclassInnerClass 111. privateintmMem=0; 112. publicvoidprintOutPrivate() 113. /这是错误的 114. /System.out.println(OutterClass.this.mMem); 115. 116. 117. publicvoidprintInPrivate() 118. InnerClassinClass=newInnerClass(); 119. /可以直接访问静态内部类的成员 120. System.out.println(inClass.mMem); 121. 122. 123. publicclassMain 124. publicstaticvoidmain(Stringargs) 125. /直接创建静态内部类 126. OutterClass.InnerClassinClass=newOutterClass.InnerClass(); 127.
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号