您的位置:首页 > 其它

静态内部类(嵌套类)与非静态内部类

2015-08-03 23:44 375 查看
static inner class  be called nested class .我总结除了三个明显的特点(随时补充添加):

1.它可以不依赖于外部类的实例而实例化。 但不能访问外部类的非静态方法。

2.外部类不能直接访问内部类的,不论是静态的还是非静态的方法,变量。 但可以通过实例化inner class 来使用

3.嵌套类只在外部类里面可见。

以下是个例子:

 public class StaticTest{

    private static String name = "woobo";

    private String num = "X001"
;
static class Person{ // 静态内部类可以用public,protected,private修饰 

        // 静态内部类中可以定义静态或者非静态的成员  

      private String address = "China";
Private Static String x=“as”;

      public String mail = "kongbowoo@yahoo.com.cn";//内部类公有成员

      public void display(){

        //System.out.println(num);//不能直接访问外部类的非静态成员

// 静态内部类不能访问外部类的非静态成员(包括非静态变量和非静态方法)

        System.out.println(name);//只能直接访问外部类的静态成员

//静态内部类只能访问外部类的静态成员(包括静态变量和静态方法)

        System.out.println("Inner " + address);//访问本内部类成员。

      }

    }

   public void printInfo(){

      Person person = new Person();
// 外部类访问内部类的非静态成员:实例化内部类即可 
person.display();

      //System.out.println(mail);//不可访问

      //System.out.println(address);//不可访问

      System.out.println(person.address);//可以访问内部类的私有成员

System.out.println(Person.x);// 外部类访问内部类的静态成员:内部类.静态成员

      System.out.println(person.mail);//可以访问内部类的公有成员

    }

    public static void main(String[] args){

      StaticTest staticTest = new StaticTest();

      staticTest.printInfo();

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: