黑马程序员技术交流社区

标题: Java类需要实例化才能使用?这句话对么?静态内部类呢? [打印本页]

作者: 李江    时间: 2013-8-10 23:09
标题: Java类需要实例化才能使用?这句话对么?静态内部类呢?
本帖最后由 graspDN 于 2013-8-11 19:23 编辑

如果Java类需要实例化才能使用这句话正确,求解释静态内部类是怎么回事?实例化了么?过程是怎样的?
求解析,谢谢~

作者: 谢孔营    时间: 2013-8-10 23:28
静态内部类是存放在静态共享区中,可以使用外部类名直接引用该类.当然要用该静态内部类中的东西,有时候也要创建该内部类对象的.如果静态内部类中的方法也是静态的,就可以直接引用.如果你使用静态内部类的对象来调用里面的方法.就会实例化到堆中.不然是不会实例化的.存在静态共享区中
作者: longlangcx    时间: 2013-8-10 23:34
类的实例化通常是指创建类的实例对象,而类的静态成员不需要实例化也可以访问。比如平时常用的一些工具类,Arrays,Collections,Math之类的,都不用创建对象就能使用,事实上想创建也创建不了~

静态内部类有点相当于外围类的静态成员,普通的内部类想要创建对象是需要通过外围类对象来创建的,并且和外围类对象具有着紧密的联系,其内部包含了一个外围类对象的隐式引用,可直接访问外围类的成员。而静态内部类创建时不需要外围类对象,但于外围类也失去了这种紧密联系。
作者: 神之梦    时间: 2013-8-11 00:15
静态类不需要创建对象可以直接使用
作者: 李健09    时间: 2013-8-11 11:04
static内部类具备了static的特性,只能直接访问外部类中的static成员,出现了访问局限
在外部其他类如何访问静态(static)内部类的非静态成员呢?
new Outer.Inner().fuction();//通过外部类下的静态类的对象访问内部了的成员
在外部其他类如何访问静态(static)内部类的静态成员呢?
Outer.Inner.fuction();//直接外部类名.内部类名.调用
注意
当内部类中定义了静态成员,那么该内部类必须是static的
当外部类的静态的方法要访问内部类时,内部类也要是静态的
作者: 李江    时间: 2013-8-11 19:22
谢孔营 发表于 2013-8-10 23:28
静态内部类是存放在静态共享区中,可以使用外部类名直接引用该类.当然要用该静态内部类中的东西,有时候也要 ...

谢啦。。。。




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