黑马程序员技术交流社区

标题: 构造方法 构造代码块 内部类? [打印本页]

作者: 胡焱老师    时间: 2014-1-20 16:09
标题: 构造方法 构造代码块 内部类?
在前一个贴子中已经知道了相关的知识点,但是还有个疑问就是:
1、内部类中是没有 构造代码块吧 ??


2、创建对象调用内部类会运行构造代码块吗??


作者: 浮出一个美    时间: 2014-1-20 17:36
哥们,你的头像很牛X啊
作者: dapeng111    时间: 2014-1-20 17:45
下面是相代码一个是内部类的,一个是外部类的。
  1. class Outer
  2. {
  3.        private int x = 3;
  4.        class InnerFirst    //这是一个成员内部类。 Static class Inner当静态内部类
  5.        {
  6.                  {
  7.                          System.out.println("这是InnerFirst类的构造函数代码块");
  8.                  }
  9.               void function()
  10.               {
  11.                      System.out.println("innner:"+Outer.this.x);
  12.               }
  13.               
  14.               void function(String str)
  15.               {
  16.                       
  17.                       System.out.println("str");
  18.               }
  19.        }

  20.        void method()
  21.        {
  22.               InnerFirst in = new InnerFirst();
  23.               in.function();
  24.        }
  25.       
  26.        void method2()
  27.        {
  28.             class InnerSecond  //这是一个局部内部类
  29.             {
  30.                      {
  31.                              System.out.println("这是InnerSecond类的构造函数代码块");
  32.                              }
  33.                  void function()
  34.                  {
  35.                      System.out.println("innner:"+Outer.this.x);
  36.                  }
  37.                  
  38.                  void function(String str)
  39.                  {
  40.                                  System.out.println(str);
  41.                  }
  42.             }
  43.             
  44.             new InnerSecond().function("hello");
  45.        }
  46. }

  47. class  InnerClassDemo   
  48. {
  49.        public static void main(String[] args)
  50.        {
  51.               Outer out = new Outer();
  52.               out.method();
  53.               out.method2();
  54.        }
  55. }
复制代码
1、内部类中也有构造代码块。因为内部类也是类,是类就可以有多个构造函数,就可以提取共同的部分,形成构造函数代码块。2、创建对象调用内部类,此时如果类中有代码块的话,一定会运行构造代码块。而且无论构造代码块在程序中的任何位置,一定会先于其它函数执行。

   

1111.jpg (41.99 KB, 下载次数: 19)

结果

结果

作者: 胡焱老师    时间: 2014-1-20 18:27
dapeng111 发表于 2014-1-20 17:45
下面是相代码一个是内部类的,一个是外部类的。
1、内部类中也有构造代码块。因为内部类也是类,是类就可以 ...

非常感谢!!!




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