静态内部类和非静态内部类的区别

来源:互联网 发布:知乎 周广甫 编辑:程序博客网 时间:2024/05/08 01:21

案例:

复制代码
package com.devin;public class MyMain{    private static String name = "woobo";    private String num = "X001";     // 静态内部类可以用public,protected,private修饰    static class Person {        // 静态内部类中可以定义静态或者非静态的成员        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) {        MyMain staticTest = new MyMain();        staticTest.printInfo();    }}
复制代码

1. 嵌套类的对象,并不需要其外围类的对象。 即它可以不依赖于外部类实例被实例化。

2. 不能从嵌套类的对象中访问非静态的外围类对象。 这是由Java语法中"静态方法不能直接访问非静态成员"所限定

3. 外部类访问内部类的的成员有些特别, 不能直接访问, 但可以通过内部类实例来访问, 这是因为静态嵌套内的所有成员和方法默认为静态的了.同时注意, 内部静态类Person只在类StaticTest 范围内可见, 若在其它类中引用或初始化, 均是错误的.
4 . 静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 
5. 静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;

6 . 非静态内部类的非静态成员可以访问外部类的非静态变量。

    生成一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in = new Outer.Inner();而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类(正常情况下,你不能在接口内部放置任何代码,但嵌套类可以作为接口的一部分,因为它是static 的。只是将嵌套类置于接口的命名空间内,这并不违反接口的规则)

总之一句话:内部静态类没持有其外部类的对象的引用。

转自:http://www.cnblogs.com/devinzhang/archive/2012/02/09/2344105.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 牙旁边的肉疼怎么办 鼻头软骨捏的痛怎么办 耳洞发炎肿了怎么办 一上火耳朵就疼怎么办 耳朵像隔了层膜怎么办 感冒引起的耳闷怎么办 5岁儿童视力0.6怎么办 柯基耳朵不立怎么办 宝宝一惊一乍睡觉不踏实怎么办 新婴儿睡觉不踏实怎么办 耳朵里面疼肿了怎么办 生出来的孩子是畸形怎么办 二胎生了缺陷儿怎么办 扣完肚脐眼后疼怎么办 刚出生的婴儿屁股红怎么办 狗狗耳朵流血了怎么办 狗狗不让掏耳朵怎么办 下巴总是反复长脓包怎么办 不胖但有双下巴怎么办 早上起床眼肿了怎么办 小孩鼻梁很塌的怎么办 17岁鼻子是塌的,怎么办 鼻子又塌又翘怎么办 戴眼镜鼻子塌了怎么办 耳朵里长了粉刺怎么办 耳洞太大了怎么办变小 天生嘴唇厚又大怎么办 上嘴唇太厚怎么办还翘 20岁欠债5万怎么办 脑袋撞了个包怎么办 交通事故对方全责但不赔偿怎么办 人格分列症的症状怎么办 子宫肌瘤月经量多怎么办 卵泡长得太慢怎么办 后期卵泡长得慢怎么办 促排卵泡长得慢怎么办 子宫内膜薄要怎么办啊 hcg值正常孕酮低怎么办 20号染色体三体怎么办 14号染色体三体怎么办 怀孕七个月不想要了怎么办