黑马程序员技术交流社区

标题: 内部类创建对象问题 [打印本页]

作者: 执笔梦    时间: 2013-11-22 21:54
标题: 内部类创建对象问题
public class InnerClass {
        public static void main(String[] args) {
                        Out.Inner i = new Out().new Inner();
                        i.print();
        }
}
class Out{
        String str = "cc";
        class Inner{
                String str = "诗诗";
                public void print()
                {
                        System.out.println("外部类变量:"+Out.this.str);// 在this前加上外部类名,打印外部类变量
                        System.out.println("内部类变量:"+this.str);// // 用this关键字打印内部类的变量
                }
        }
}
Out.Inner i = new Out().new Inner();
//在这只 是创建内部类对象,还是创建内部类和外部类的对象。

作者: 何丛    时间: 2013-11-22 22:22
加了几句代码
  1. public class InnerClass {
  2.         public static void main(String[] args) {
  3.                         Out.Inner i = new Out().new Inner();
  4.                         i.print();
  5.         }
  6. }
  7. class Out{
  8.         String str = "cc";
  9.         //加入构造函数
  10.         Out(){
  11.                 System.out.println("out");
  12.         }
  13.         class Inner{
  14.                 String str = "诗诗";
  15.               //加入构造函数
  16.                 Inner(){
  17.                         System.out.println("inner");
  18.                 }
  19.                 public void print()
  20.                 {
  21.                         System.out.println("外部类变量:"+Out.this.str);// 在this前加上外部类名,打印外部类变量
  22.                         System.out.println("内部类变量:"+this.str);// // 用this关键字打印内部类的变量
  23.                 }
  24.         }
  25. }
复制代码
运行截图

由运行结果可知,先创建外部对象,然后再创建内部对象
其实内部类是外部类的成员,拿非静态的成员变量来说,也要先有类的对象才有成员变量,非静态的外部类也是一样的,非方法中的内部类楼主可以将它当成一般的成员一样来考虑




作者: hurryup    时间: 2013-11-23 01:01
应当先外部后内部,你可以这么想,没有外部类怎么可能有内部类呢?内部类只是外部类的一个成员。




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