黑马程序员技术交流社区
标题:
内部类问题!
[打印本页]
作者:
余琪琪
时间:
2013-10-14 12:41
标题:
内部类问题!
本帖最后由 余琪琪 于 2013-10-15 11:13 编辑
毕向东老师的25天java视频里,第九天第一节说“外部类要访问内部类,必须建立内部类对象”,但是第二节
<p>class Outer
{
private static int x = 3;
static class Inner//静态内部类
{
static void function()
{
System.out.println("innner :"+x);
}
}
public static void method()
{
Inner.function();
}
}</p><p>其中method中却没有创建内部类对象?我是否能理解为毕老师在第一节并没有说清楚条件,应该确切的说:外部类要访问内部类,必须建立内部类对象。(但当外部类和内部类都是静态时,则不需要创建内部类对象),对吗?</p>
复制代码
作者:
hoyouly
时间:
2013-10-14 14:14
纠正一个错误,你见过外部类有静态的吗??static能修饰内部类,但是好像不能修饰外部类吧,
那个inner是一个静态内部类:静态内部类定义在类中,任何方法外,用static定义。
静态内部类只能访问外部类的静态成员。生成(new)一个静态内部类不需要外部类成员:这是静态内部类和成员内部类的区别。静态内部类的对象可以直接生成:Outer.Inner in=new Outer.Inner();
而不需要通过生成外部类对象来生成。这样实际上使静态内部类成为了一个顶级类。
静态内部类不可用private来进行定义。
希望对你有所帮助
作者:
阿里策
时间:
2013-10-14 18:55
这应该是属于静态static的用法。
任何类中的静态方法都是可以由类直接调用的,
并不需要非得生成一个该类的对象才能调用。因为static修饰的方法在类加载时就已经生成,也就是对象生成前就已经存在了。
这里就是这样,Inner类直接调用其内部静态方法,没有生成对象,也不需要生成对象。任何一个类都有这项功能,这里你可以把Inner类当做Outer外的其他类来理解可能会好理解一些。
静态方法特殊,可以由类直接调用的,不需要生成对象。
作者:
To
时间:
2013-10-14 19:26
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
作者:
影响力147753321
时间:
2013-10-14 19:28
不是的,要看内部类中的变量或方法是类级别的还是对象级别的,类级别不用建对象,否则要建
作者:
余琪琪
时间:
2013-10-15 11:11
毕老师说“外部类要访问内部类,必须建立内部类对象”,但是不是:外部类中的静态方法调用静态内部类时,就不需要建立内部类?
作者:
余琪琪
时间:
2013-10-15 11:13
阿里策 发表于 2013-10-14 18:55
这应该是属于静态static的用法。
任何类中的静态方法都是可以由类直接调用的,并不需要非得生成一 ...
欧了,很感谢,疑问已解决!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2