A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

  1. class Outer{

  2.         private String title = "我爱黑马";

  3.         //普通成员内部类,类前不加修饰符
  4.         class Inner{
  5.                 public void show(){

  6.                         System.out.println(title);
  7.                         System.out.println("成员内部类,不加修饰符");
  8.                 }
  9.         }

  10.         //私有成员内部类,类前加修饰符private
  11.         private class Inner2{
  12.                 public void show2(){
  13.                         System.out.println("成员内部类,加修饰符private");
  14.                 }
  15.         }
  16.        
  17.         public void method(){
  18.                 Inner2 i2 = new Inner2();
  19.                 i2.show2();
  20.         }

  21.         //静态成员内部类,类前加修饰符static
  22.         public static class Inner3{

  23.                 public void show3_1(){

  24.                         System.out.println("静态成员内部类---非静态方法");
  25.                 }

  26.                 public static void show3_2(){

  27.                         System.out.println("静态成员内部类---静态方法");
  28.                 }
  29.         }

  30.         //局部内部类
  31.         public void partInner(){

  32.                 final String num1 = "外部类--方法中---成员变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final
  33.                 //定义类
  34.                 class Inner3{

  35.                         String num2 = "外部类--方法中---内部类---成员变量";
  36.                         public void show(){

  37.                                 String num3 = "外部类--方法中---内部类---局部变量";
  38.                                 System.out.println(num3);
  39.                                 System.out.println(num2);
  40.                                 System.out.println(num1);
  41.                         }
  42.                 }

  43.                 //创建对象-----局部内部类要在本方法中创建对象
  44.                 Inner3 i = new Inner3();
  45.                 i.show();
  46.         }

  47.         public void function()
  48.         {
  49.                
  50.                 Outer oo = new Outer();
  51.                 oo.partInner();//这个function中上面两条语句的方法类似成员内部类的调用,视频中没讲,自己写的

  52.                 //如果没有上面两条语句,这个function方法中只有下面两条语句,那么就是错误
  53.                 //Inner3 r = new Inner3();
  54.                 //r.show();
  55.         }

  56. }

  57. class Day10Test {
  58.        
  59.         public static void main(String[] args) {

  60.                 System.out.println("第一种方式");
  61.                 Outer.Inner oi = new Outer().new Inner();
  62.                 oi.show();

  63.                 System.out.println("-----------------");

  64.                 System.out.println("第二种方式");
  65.                 Outer oi2 = new Outer();
  66.                 oi2.method();

  67.                 System.out.println("-----------------");

  68.                 System.out.println("第三种方式");
  69.                 //如果内部类是static修饰
  70.                 //格式:
  71.                 //外部类名.内部类名 变量 = new 外部类名.内部类名();
  72.                 Outer.Inner3 oi3 = new Outer.Inner3();
  73.                 oi3.show3_1();

  74.                 oi3.show3_2();
  75.                 //Outer.Inner3.show3_1();
  76.                 Outer.Inner3.show3_2();

  77.                 System.out.println("-----------------");

  78.                 System.out.println("第四种方式");
  79.                 Outer oi4 = new Outer();
  80.                 oi4.partInner();

  81.                 System.out.println("-----------------");
  82.                 oi4.function();//测试function()方法


  83.         }
  84. }
复制代码

评分

参与人数 1黑马币 +4 收起 理由
夜空中最亮的星 + 4 赞一个!

查看全部评分

27 个回复

正序浏览
:victory::victory:
回复 使用道具 举报
+1
回复 使用道具 举报
涨知识了
回复 使用道具 举报
感谢楼主,赞一个。
回复 使用道具 举报
此贴不火,非人道也!
回复 使用道具 举报
夜空中最亮的星 发表于 2015-7-3 22:03
谢谢楼主,这个代码帮我梳理了一下内部类的小疑惑,有没有关于匿名内部类的总结呢? ...

匿名内部类也就是没有名字的内部类

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
回复 使用道具 举报
杨基米德 来自手机 中级黑马 2015-7-5 06:41:37
22#
学习一下~感谢楼主~
回复 使用道具 举报
温故而知新,不错!
回复 使用道具 举报
写的真全! 攒一个!
回复 使用道具 举报
这个真得顶 也帮我复习了一下 感谢楼主!
回复 使用道具 举报
很厉害哦
回复 使用道具 举报
"***final String num1 = "外部类--方法中---成员变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final***"楼主你这句应该改为:
final String num1 = "外部类--方法中---局部变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final
回复 使用道具 举报
18295718171 来自手机 中级黑马 2015-7-4 23:13:28
16#
不错啊!
回复 使用道具 举报
继续加油!!!
回复 使用道具 举报
总结的很好,复习了
回复 使用道具 举报
没看懂啊
回复 使用道具 举报
没看明白啊
回复 使用道具 举报
挺好的,很详细
回复 使用道具 举报
学而时习之
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马