今天看到一代码,该代码实例化了一个内部类,但却不用先实例化其外部类。于是感到奇怪,因为以前实例化内部类都是需要类似的格式:
- Outclass.Innerclass ic=new Outclass.new Innerclass();
复制代码 但外部类想实例化静态内部类却不能这么写:- package com.kid.innerclass;
- import com.kid.innerclass.Outclass.Innerclass;
- public class Outclass {
- public static class Innerclass {
- Innerclass() {
- System.out.println("Innerclass is comming");
- }
- }
- }
- class Test1 {
- public static void main(String args[]) {
- Innerclass ic = new Innerclass();
- Outclass.Innerclass ic2 = new Outclass.Innerclass();
- Innerclass ic3 = new Outclass.Innerclass();
- /*
- * Innerclass ic4=new Outclass().new Innerclass();//这种写法错误
- */
- }
- }
复制代码
问题来了,为什么不可以这么写:
- Outclass.Innerclass ic=new Outclass.new Innerclass();
复制代码 它和程序上其他三种写法有何区别呢?
|