A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王丽   /  2011-7-28 20:27  /  2330 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态内部类和内部类有什么不同啊?

评分

参与人数 1技术分 +3 收起 理由
老罗 + 3 每次提问后,为什么就不管了?

查看全部评分

3 个回复

倒序浏览
黑马网友  发表于 2011-7-29 00:08:09
沙发
如果你声明的成员类不要求访问外围实例,那么请记住把 static 修饰符放到成员类的声明中,使它成为一个静态成员类,而不是一个非静态成员类 。如果你省略了 static 修饰符,则每个实例都将包含一个额外的指向外围对象的引用 。维护这份引用要消耗时间和空间,但又没有相应的好处 。如果在没有外围实例的情况下,你也要分配实例的话,则不能使用非静态成员类,因为非静态成员类的实例必须要有一个外围实例。
回复 使用道具 举报
黑马网友  发表于 2011-7-29 01:08:31
藤椅
静态内部类 不能直接访问外部类的成员变量和方法,因为静态的不需要对象,但是外部类又需要实例话一个对象  这样就矛盾了
回复 使用道具 举报
黑马网友  发表于 2011-7-29 10:46:39
板凳
嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是嵌套类的成员却不能被嵌套它的类直接访问。 在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用。
如果用static修饰一个内部类,这个类就相当于是一个外部定义的类,所以static的内部类中可声明static成员,但是,非static的内部类中的成员是不能声明为static的。static的内部类不能再使用外层封装类的非static的成员变量。
在方法中定义的内部类只能访问方法中的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马