黑马程序员技术交流社区

标题: java 内部类 [打印本页]

作者: 王丽    时间: 2011-7-28 20:27
标题: java 内部类
静态内部类和内部类有什么不同啊?
作者: 匿名    时间: 2011-7-29 00:08
如果你声明的成员类不要求访问外围实例,那么请记住把 static 修饰符放到成员类的声明中,使它成为一个静态成员类,而不是一个非静态成员类 。如果你省略了 static 修饰符,则每个实例都将包含一个额外的指向外围对象的引用 。维护这份引用要消耗时间和空间,但又没有相应的好处 。如果在没有外围实例的情况下,你也要分配实例的话,则不能使用非静态成员类,因为非静态成员类的实例必须要有一个外围实例。
作者: 匿名    时间: 2011-7-29 01:08
静态内部类 不能直接访问外部类的成员变量和方法,因为静态的不需要对象,但是外部类又需要实例话一个对象  这样就矛盾了
作者: 匿名    时间: 2011-7-29 10:46
嵌套类可以直接访问嵌套它的类的成员,包括private成员,但是嵌套类的成员却不能被嵌套它的类直接访问。 在内部类对象保存了一个对外部类对象的引用,当内部类的成员方法中访问某一变量时,如果在该方法和内部类中都没有定义过这个变量,内部类中对this的引用会被传递给那个外部类对象的引用。
如果用static修饰一个内部类,这个类就相当于是一个外部定义的类,所以static的内部类中可声明static成员,但是,非static的内部类中的成员是不能声明为static的。static的内部类不能再使用外层封装类的非static的成员变量。
在方法中定义的内部类只能访问方法中的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期。




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