黑马程序员技术交流社区

标题: 静态内部类与非静态内部类解析 [打印本页]

作者: 王者黑桃    时间: 2014-1-3 21:08
标题: 静态内部类与非静态内部类解析
外部类调用非静态内部类中的方法:

public class OuterClass{
         public class InnerClass{
                   public void print(){
                            System.out.println("this a innerclass");
                   }
         }
         public void fun(){
                  new InnerClass().print();
         }
         public static void main(String[] args){
                  OuterClass.InnerClass p = new OuterClass().new InnerClass();
                  p.print();
                  new OuterClass().fun();
                  System.out.println("this is a outerclass");
         }
}

外部类调用静态内部类中的非静态方法:

public class OuterClass{
         public static class InnerClass{
                  public InnerClass(){
                           System.out.println("this is a innerclass");
                  }
                 public void print(String str){
                          System.out.println(str);
                 }
         }
         public static void main(String ages[]){
                  OuterClass.InnerClass ci = new OuterClass.InnerClass();
                  ci.print("this is a string");
         }
}

外部类调用静态内部类中的静态方法:

public class OuterClass{
          public static class InnerClass{
                    public static void print(String str){
                             System.out.println(str);
                    }
         }
         public void fun(String str){
                   InnerClass.print(str);
         }
         public static void main(String[] args){
                   InnerClass.print("this is a string");
                   new OuterClass().fun("this is a another string");
         }
}

总结:

在一个类中可以声明一个类或接口。
在一个接口中可以声明一个类或接口。
在一个方法中可以声明一个类(局部内部类)。
普通类不能声明为static,而内部类可以声明为static(静态内部类)。
静态内部类可以有静态成员和非静态成员,而非静态内部类则不能有静态成员。
静态内部类的成员可以访问外部类的静态变量,而不可访问外部类的非静态变量。
非静态内部类的成员可以访问外部类的非静态变量。





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