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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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:
回复 使用道具 举报
这么强啊啊  我对内部类还纠结呢  谢谢啊
回复 使用道具 举报
楼主很强,先标记一下,后面学习
回复 使用道具 举报
赞一个!
回复 使用道具 举报
学而时习之
回复 使用道具 举报
挺好的,很详细
回复 使用道具 举报
没看明白啊
回复 使用道具 举报
没看懂啊
回复 使用道具 举报
总结的很好,复习了
回复 使用道具 举报
继续加油!!!
回复 使用道具 举报
18295718171 来自手机 中级黑马 2015-7-4 23:13:28
16#
不错啊!
回复 使用道具 举报
"***final String num1 = "外部类--方法中---成员变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final***"楼主你这句应该改为:
final String num1 = "外部类--方法中---局部变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final
回复 使用道具 举报
很厉害哦
回复 使用道具 举报
这个真得顶 也帮我复习了一下 感谢楼主!
回复 使用道具 举报
写的真全! 攒一个!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马