内部类一些

ゞ 浴缸里的玫瑰 2022-06-16 03:57 226阅读 0赞
  1. 内部类概述和访问特点
  2. A:内部类概述:类中定义的类
  3. B:内部类访问特点
  4. * a:内部类可以直接访问外部类的成员,包括私有。
  5. * b:外部类要访问内部类的成员,必须创建对象。
  6. * 外部类名.内部类名 对象名 = 外部类对象.内部类对象;
  7. 成员内部类私有使用
  8. 静态成员内部类
  9. static
  10. 成员内部类被静态修饰后的访问方式是:
  11. * 外部类名.内部类名 对象名 = 外部类名.内部类对象;
  12. 局部内部类访问局部变量的问题
  13. public class c {
  14. public static void main(String[] args) {
  15. //Inner i = new Inner();
  16. //i.method();
  17. //外部类名.内部类名 = 外部类对象.内部类对象
  18. //Outer.Inner oi = new Outer().new Inner(); //创建内部类对象
  19. //oi.method();
  20. /*Outer o = new Outer();//成员内部类私有使用
  21. o.pro();*/
  22. Outer.Inner in = new Outer.Inner();
  23. in.method();
  24. in.pro();
  25. Outer.Inner.pro();
  26. }
  27. }
  28. class Outer {
  29. private int num = 10;
  30. /*class Inner {
  31. public void method() {
  32. System.out.println(num);
  33. }*/
  34. /*private class Inner {
  35. public void method() {
  36. System.out.println(num);
  37. }
  38. }*/
  39. static class Inner {
  40. public void method() {
  41. System.out.println("hello");
  42. }
  43. public static void pro(){
  44. System.out.println("hellopro");
  45. }
  46. }
  47. /*public void pro(){
  48. Inner i = new Inner();
  49. i.method();
  50. }*/
  51. }
  52. 要求:使用已知的变量,在控制台输出302010
  53. class Outere {
  54. public int num = 10;
  55. class Inner {
  56. public int num = 20;
  57. public void show() {
  58. int num = 30;
  59. System.out.println(num);
  60. System.out.println(this.num);
  61. System.out.println(Outere.this.num);
  62. //内部类之所以能获取到外部类的成员,是因为他能获取到外部类的引用外部类名.this
  63. }
  64. }
  65. }
  66. class InnerClassTest {
  67. public static void main(String[] args) {
  68. Outer.Inner oi = new Outere().new Inner();
  69. oi.show();
  70. }
  71. }
  72. /*
  73. 局部内部类访问局部变量的问题(类中的方法中的类)
  74. 局部内部类访问局部变量必须用final修饰
  75. 局部内部类在访问他所在方法中的局部变量必须用final修饰,为什么?
  76. 因为当调用这个方法时,局部变量如果没有用final修饰,他的生命周期和方法的生命周期是一样的,
  77. 当方法弹栈,这个局部变量也会消失,那么如果局部内部类对象还没有马上消失想用这个局部变量,就没有了,
  78. 如果用final修饰会在类加载的时候进入常量池,即使方法弹栈,常量池的常量还在,也可以继续使用
  79. */
  80. //局部内部类
  81. class Outeree {
  82. public void method() {
  83. final int num = 10;
  84. class Inner {
  85. public void print() {
  86. System.out.println(num);//局部内部类访问局部变量
  87. }
  88. }
  89. Inner i = new Inner();
  90. i.print();
  91. }
  92. /*public void run() {
  93. Inner i = new Inner(); //局部内部类,只能在其所在的方法中访问
  94. i.print();
  95. }*/
  96. }
  97. class Demo_Inner {
  98. public static void main(String[] args) {
  99. Outeree o = new Outeree();
  100. o.method();
  101. }
  102. }

发表评论

表情:
评论列表 (有 0 条评论,226人围观)

还没有评论,来说两句吧...

相关阅读