黑马程序员技术交流社区

标题: 关于内部类的问题 [打印本页]

作者: 松毛    时间: 2013-11-5 07:16
标题: 关于内部类的问题
本帖最后由 松毛 于 2013-11-5 11:04 编辑

请问一下内部类如何访问外部类中的方法?他在主函数中是如何实现访问的?能否举一个例子。小弟万分感激

作者: ☆╰學不会☆╮    时间: 2013-11-5 08:27
本帖最后由 ☆╰學不会☆╮ 于 2013-11-5 08:29 编辑

存在类中的类叫做内部类,它所在的类叫外部类。
内部类的访问规则:
1 内部类可以直接访问它所在外部类的成员属性和成员方法,也包括私有的。
2 外部类要访问内部类,必须建立内部类的对象 才能引用其内部类中的成员方法和属性。

在主函数main方法中 如果想要访问内部类也要建立内部类的对象。
class WaiBu{
   private String name="zhangsan";
   private int x;
class NeiBu{                //定义的内部类
    public void show(){
    System.out.println("Name="+name);  //访问外部类所在的属性 默认执行的是WaiBu.this.name;
}
}
public static void main(String[] args){
// 要想访问 内部类中的函数 就要新建内部类的对象
WaiBu.NeiBu aa=newWaiBu().new NeiBu();
  aa.show();      
//这样通过内部类的对象就能引用到内部类中的show()方法 因为输出语句中的name属性是外部类的 因为内部类可以访问到外部类所以输出结果为      Name="zhangsan"
}
}
作者: 松毛    时间: 2013-11-5 08:36
☆╰學不会☆╮ 发表于 2013-11-5 08:27
存在类中的类叫做内部类,它所在的类叫外部类。
内部类的访问规则:
1 内部类可以直接访问它所在外部类的成 ...

谢谢你的答复!!!
但是这个name属于外部类中的变量吧?怎么样用内部类访问外部类中的方法呢?
作者: 胡志翔    时间: 2013-11-5 08:42
内部类访问特点:
1、内部类可以直接访问外部类中的成员,因为内部类持有外部类的引用,格式为:外部类名.this
2、外部类要想访问内部类的成员,必须创建对象访问。

内部类的访问格式:
1、当内部类定义在外部类的成员位置,而且非私有,则可以在其他外部类中直接建立内部类对象
      格式:外部类名.内部类名  变量名 = new 外部类对象.内部类对象
       如:Outer.Inner in = new Outer().new Inner()
2、当内部类在外部类成员位置,且被static修饰时
     ①外部其他类可直接访问静态内部类的非静态成员
                          格式:new 外部类名.内部类名().内部类成员
                          如:new Outer.Inner().function();
     ②外部其他类可直接访问静态内部类的静态成员
                          格式:new 外部类名.内部类名.内部类成员
                          如:new Outer.Inner.function();

什么使用时候内部类呢?
假如有A类和B类,A类想直接访问B类的成员,B类访问A类成员的时候,需要创建A类对象进行访问,这个时候,就可以把A类定义为B类的内部类。

作者: 黄炳期    时间: 2013-11-5 08:46
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html




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