黑马程序员技术交流社区

标题: 今天刚学的内部类,简单的写了一些内部类的小练习 [打印本页]

作者: 空城dream    时间: 2015-7-3 21:42
标题: 今天刚学的内部类,简单的写了一些内部类的小练习
  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. }
复制代码

作者: 夜空中最亮的星    时间: 2015-7-3 22:03
谢谢楼主,这个代码帮我梳理了一下内部类的小疑惑,有没有关于匿名内部类的总结呢?
作者: dajiaoya    时间: 2015-7-4 11:35
分享快乐 ,赞个
作者: javaking    时间: 2015-7-4 14:27
总结的不错!学的好仔细!
作者: 小糊涂仙    时间: 2015-7-4 17:22
可以呀,赞一个
作者: liuhao_hm    时间: 2015-7-4 20:32
赞一个:victory:
作者: 走在这里    时间: 2015-7-4 21:40
这么强啊啊  我对内部类还纠结呢  谢谢啊
作者: wengjialiang    时间: 2015-7-4 22:06
楼主很强,先标记一下,后面学习
作者: zhangxin    时间: 2015-7-4 22:13
赞一个!
作者: 帅帅loyal    时间: 2015-7-4 22:19
学而时习之
作者: qingger    时间: 2015-7-4 22:19
挺好的,很详细
作者: zhand    时间: 2015-7-4 22:28
没看明白啊
作者: 炎舞霜冬    时间: 2015-7-4 22:40
没看懂啊
作者: very爱    时间: 2015-7-4 22:59
总结的很好,复习了
作者: 小龙编程世界    时间: 2015-7-4 23:11
继续加油!!!
作者: 18295718171    时间: 2015-7-4 23:13
不错啊!
作者: wengjialiang    时间: 2015-7-4 23:14
"***final String num1 = "外部类--方法中---成员变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final***"楼主你这句应该改为:
final String num1 = "外部类--方法中---局部变量";//如果局部内部类,调用本方法中的局部变量,局部变量前必须加final

作者: 徐向贵    时间: 2015-7-4 23:22
很厉害哦
作者: sophitia    时间: 2015-7-4 23:25
这个真得顶 也帮我复习了一下 感谢楼主!
作者: 如初见    时间: 2015-7-4 23:54
写的真全! 攒一个!
作者: xiaoxinxin003    时间: 2015-7-5 02:06
温故而知新,不错!
作者: 杨基米德    时间: 2015-7-5 06:41
学习一下~感谢楼主~
作者: a80194367    时间: 2015-7-5 08:30
夜空中最亮的星 发表于 2015-7-3 22:03
谢谢楼主,这个代码帮我梳理了一下内部类的小疑惑,有没有关于匿名内部类的总结呢? ...

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

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

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口
作者: 430422    时间: 2015-7-5 09:54
此贴不火,非人道也!
作者: hp_discuz    时间: 2015-7-5 22:34
感谢楼主,赞一个。
作者: nanfp    时间: 2015-7-6 07:45
涨知识了
作者: EnderDBluse    时间: 2015-7-6 09:33
+1
作者: 野驴少东    时间: 2015-7-6 11:29
:victory::victory:




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2