黑马程序员技术交流社区
标题:
请教问题:关于内部类的访问方法。
[打印本页]
作者:
李征雪
时间:
2012-4-2 16:35
标题:
请教问题:关于内部类的访问方法。
//Demo0902.java
class Outer
{
public static int num = 5;
static class Inner
{
static void fun()
{
System.out.println("Inner:"+num);
}
}
}
class Demo0902
{
public static void main(String[] args)
{
new Outer.Inner().fun();//可以直接访问内部静态类中的方法;
Outer.Inner oi = new Outer.Inner();//外部类.内部类().
oi.fun();
Outer.Inner.fun();//直接通过类名访问静态内部类中的静态函数;
}
}
复制代码
请问在第20行代码中,new Outer.Inner().fun();如果改成new Outer().Inner().fun();为什么会报错(Outer多一个括号),我不太明白那个括号的作用。
//Demo0904.java
class Outer
{
int x = 3;
void method()
{
class Inner
{
void fun()
{
System.out.println(Outer.this.x);
}
}
new Inner().fun();
}
}
class Demo0904
{
public static void main(String[] args)
{
new Outer().method();
System.out.println("Hello World!");
}
}
复制代码
在这段代码中第22行为什么Outer要加括号?
朋友们帮忙啊,我想知道在内部类的访问中括号有什么作用或代表什么?感觉这个和构造方法不太一样啊。
作者:
鲍亚坤
时间:
2012-4-2 17:06
带上(),new Outer().Inner().默认找的是Out类中的Inner()方法。。找不到Inner方法当然报错了。。
new Outer().method();找的是Outer类中的method()方法。。
作者:
攻城狮
时间:
2012-4-2 17:18
访问格式:1,当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中。可以直接建立内部类对象。格式: 外部类名.内部类名 变量名 = 外部类对象.内部类对象; Outer.Inner in = new Outer().new Inner();
2,当内部类在成员位置上,就可以被成员修饰符所修饰。
比如,private:将内部类在外部类中进行封装。static:内部类就具备static的特性。
当内部类被static修饰后,只能直接访问外部类中的static成员。出现了访问局限。
在外部其他类中,如何直接访问static内部类的非静态成员呢?格式 :new Outer.Inner().function();
在外部其他类中,如何直接访问static内部类的静态成员呢?格式 :Outer.Inner.function();
作者:
攻城狮
时间:
2012-4-2 17:19
熟悉各种格式后···你便知道为什么了 建议再看下面向对象内部类讲解那部分··
作者:
李征雪
时间:
2012-4-2 17:47
呵呵,谢谢,解决了,还是由于静态成员和构造方法这边的问题,在第9天后面的视频中有讲到过。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2