黑马程序员技术交流社区

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

作者: 冉世友    时间: 2012-12-29 21:45
标题: 关于内部类的疑问
本帖最后由 心犀香 于 2012-12-30 10:04 编辑

一个类中有好几个内部类,其中一个内部类里面怎么访问其他内部类里的成员和方法呢?
  1. Class Outer{
  2.      
  3.      Class Inner1{
  4. //如何在这里访问Inner2里的function方法
  5.      }

  6.      class Inner2{
  7.        public void function(){
  8.        }

  9.       }

  10. }
复制代码
比如说,我想在Inner1中访问Inner2中的function方法,在eclipse里我用new Inner2().fuction()不行的,new Outer().new Inner2().function()也不行。。。。



作者: 马志军    时间: 2012-12-29 22:55
在度娘搜了下,看到些答案,试了不对,不过好像反而懂了。
类中成员有变量,有方法,还可能有内部类,现在好像就遇到过这几种。
如果直接写new Inner2().fuction()这句,在类Inner1中,这句话既不是变量,也不是方法,感觉什么都不是,这句话若执行返回fuction()的返回值,这里是void,就算是个int,具体的是个数1,但这好像没头没尾的在类中放了个1,我估计就是因为这个原因。平常一般都在main方法里写代码,突然在一个空白的类里好像有点反应不过来。所以要在Inner1调用Inner2成员,改成用Inner1的一个方法里去调用,比如
class Inner1{
        public void method() {
             new Inner2().function();
        }
}我试了下,这样就没错误了。
作者: 冉世友    时间: 2012-12-30 10:03
马志军 发表于 2012-12-29 22:55
在度娘搜了下,看到些答案,试了不对,不过好像反而懂了。
类中成员有变量,有方法,还可能有内部类,现在 ...

弄成点评了,多谢指点哈~
作者: 马志军    时间: 2012-12-30 10:08
心犀香 发表于 2012-12-30 10:03
弄成点评了,多谢指点哈~

my pleasure
作者: 王晓楠    时间: 2013-1-10 00:19


  1. class InnerClassDemo3
  2. {
  3. public static void main(String[] args)
  4. {
  5. Outer.Inner1 inner=new Outer().new Inner1();
  6. inner.func1();
  7. }
  8. }

  9. class Outer
  10. {
  11. class Inner1
  12. {
  13. void func1()
  14. {
  15. Outer.Inner2 inner=new Outer().new Inner2();
  16. inner.func2();
  17. }
  18. }
  19. class Inner2
  20. {
  21. void func2()
  22. {
  23. System.out.println("hello word!");
  24. }
  25. }
  26. }
复制代码

作者: 冉世友    时间: 2013-1-11 23:19
wz999hmlt 发表于 2013-1-10 13:12
楼上的方法很赞。求解若要使两个内部类同时定义到外部类的方法中,那这两个内部类怎么互相访问
class Outer ...

看看直接New对象行不行~
作者: 1844611785    时间: 2013-5-5 00:07
王芝 发表于 2013-1-10 13:12
楼上的方法很赞。求解若要使两个内部类同时定义到外部类的方法中,那这两个内部类怎么互相访问
class Outer ...

你好,我觉得是这样的,类是随着对象的建立而加载的,只有当Inner2加载完以后才可以调用里面的方法。所以你可以把Inner2放到前面Inner1d的位置,然后再在Inner1中调用function2()




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