黑马程序员技术交流社区

标题: 外部其它类调用内部类函数问题? [打印本页]

作者: Geek_001    时间: 2014-6-22 15:02
标题: 外部其它类调用内部类函数问题?
本帖最后由 Geek_001 于 2014-6-23 10:07 编辑

如何解决下面的死循环问题?

获.PNG (149.27 KB, 下载次数: 29)

获.PNG

作者: 姿_`态    时间: 2014-6-22 15:20
你这是死循环? 里面的show()是抽象的吧
作者: Geek_001    时间: 2014-6-22 18:42
姿_`态 发表于 2014-6-22 15:20
你这是死循环? 里面的show()是抽象的吧

亲,如何解决这个死循环?想想办法
作者: 姿_`态    时间: 2014-6-22 19:21
Geek_001 发表于 2014-6-22 18:42
亲,如何解决这个死循环?想想办法

既然你已经知道他是死循环,你为什么还要那么写呐。别让他相互调用不就好了
作者: 18353666072    时间: 2014-6-22 19:23
本帖最后由 18353666072 于 2014-6-22 19:26 编辑

把内部类里的函数里面的show删了就好了啊
作者: 波涛    时间: 2014-6-22 19:34
谁知道你的目的是想干嘛啊!这肯定死循环啊~
作者: Geek_001    时间: 2014-6-22 20:37
波涛 发表于 2014-6-22 19:34
谁知道你的目的是想干嘛啊!这肯定死循环啊~

仁兄!确实是死循环,问题是如何让内部类调用外部类函数,外部类函数调用内部类函数的要求下不死循环?
作者: Geek_001    时间: 2014-6-22 20:40
18353666072 发表于 2014-6-22 19:23
把内部类里的函数里面的show删了就好了啊

是死循环,问题是如何让内部类调用外部类函数,外部类函数调用内部类函数的要求下不死循环?
作者: Geek_001    时间: 2014-6-22 20:42
姿_`态 发表于 2014-6-22 19:21
既然你已经知道他是死循环,你为什么还要那么写呐。别让他相互调用不就好了 ...

仁兄,我也不想写啊,要求是如何让内部类调用外部类函数,外部类函数调用内部类函数的要求下不死循环?
作者: 波涛    时间: 2014-6-22 23:16
Geek_001 发表于 2014-6-22 20:37
仁兄!确实是死循环,问题是如何让内部类调用外部类函数,外部类函数调用内部类函数的要求下不死循环? ...

你表述的这种内外互相调用的逻辑本身就是个死循环啊,程序写出来理所当然就是死循环了,总得有一个让他们结束的一个条件的。
  1. public class Main
  2. {
  3.      public static void main(String[]args)
  4.     {
  5.       //外部类调用内部类
  6.      new Outer().new Inner().inner();
  7.     }
  8. }
  9. class Outer
  10. {
复制代码



作者: 波涛    时间: 2014-6-22 23:17
  1. public class Main
  2. {
  3.     public static void main(String[]args)
  4.         {
  5.                 //外部类调用内部类
  6.            new Outer().new Inner().inner();
  7.         }

  8. }
  9. class Outer
  10. {
  11.         ////建立外部类成员变量私有,并赋值
  12.         private String name = "I love you";
  13.         //建立外部类函数
  14.         void show()
  15.         {
  16.            System.out.println("This is show method!");
  17.           //new Inner().inner();
  18.         }
  19.         //建立内部类
  20.         class Inner
  21.         {
  22.                 void inner()
  23.                 {
  24.                         //内部类调用外部类成员
  25.                    System.out.println("outer:"+name);
  26.                         //调用外部类方法
  27.                    show();
  28.                 }
  29.         }
  30. }
复制代码

作者: Geek_001    时间: 2014-6-22 23:19
波涛 发表于 2014-6-22 23:17

亲,你好像只是复制了额的代码?
作者: 波涛    时间: 2014-6-22 23:29
Geek_001 发表于 2014-6-22 23:19
亲,你好像只是复制了额的代码?

这个不会出现死循环!改了17、18行
作者: 陈云阳    时间: 2014-6-23 00:52
[code] class Main
{
    public static void main(String[]args)
        {
                //外部类调用内部类
           new Outer().new Inner().inner(5);
        }

}
class Outer
{
        ////建立外部类成员变量私有,并赋值
        private String name = "I love you";
        //建立外部类函数
        void show(int x)
        {
                        while((x--)!=0)
                        {
                                return;
                        }
           System.out.println("This is show method!");
          new Inner().inner(x);
        }
        //建立内部类
        class Inner
        {
                void inner(int i)
                {
                        //内部类调用外部类成员
                   System.out.println("outer:"+name);
                        //调用外部类方法
                   show(i);
                }
        }
}
函数要传参,设定条件  递减,循环到一定次数就退出循环了
作者: Geek_001    时间: 2014-6-23 01:16
陈云阳 发表于 2014-6-23 00:52
[code] class Main
{
    public static void main(String[]args)

while((x--)!=0)
                {
                     return;
                }
什么都不返回吗?
作者: Geek_001    时间: 2014-6-23 01:17
姿_`态 发表于 2014-6-22 15:20
你这是死循环? 里面的show()是抽象的吧

你从哪看出来是抽象的啊!我没设置啊!

作者: Geek_001    时间: 2014-6-23 01:19
波涛 发表于 2014-6-22 23:29
这个不会出现死循环!改了17、18行

改了后,外部类如何访问内部类函数?
作者: Geek_001    时间: 2014-6-23 01:21
陈云阳 发表于 2014-6-23 00:52
[code] class Main
{
    public static void main(String[]args)

有时间请详解一下,递减的那段代码.
作者: 姿_`态    时间: 2014-6-23 08:18
Geek_001 发表于 2014-6-23 01:17
你从哪看出来是抽象的啊!我没设置啊!

我看错啦,不好意思啊

作者: 陈云阳    时间: 2014-6-23 08:38
Geek_001 发表于 2014-6-23 01:16
while((x--)!=0)
                {
                     return;

你这是函数是void,要有返回值不就错了,只为用来退出循环的
作者: 波涛    时间: 2014-6-23 09:33
Geek_001 发表于 2014-6-23 01:19
改了后,外部类如何访问内部类函数?

第六行不就是外部类调用内部类方法么!
作者: Geek_001    时间: 2014-6-23 09:57
姿_`态 发表于 2014-6-23 08:18
我看错啦,不好意思啊

木关系啦!
作者: Geek_001    时间: 2014-6-23 09:59
陈云阳 发表于 2014-6-23 08:38
你这是函数是void,要有返回值不就错了,只为用来退出循环的

我明白了,我运行一下你滴代码....
作者: Geek_001    时间: 2014-6-23 10:03
陈云阳 发表于 2014-6-23 00:52
[code] class Main
{
    public static void main(String[]args)

运行流畅......谢了哥们
作者: Geek_001    时间: 2014-6-23 10:07
波涛 发表于 2014-6-22 23:29
这个不会出现死循环!改了17、18行

           System.out.println("This is show method!");
          //new Inner().inner();
你都把访问内部类的方法都注释了,还怎么访问内部类函数?
作者: 波涛    时间: 2014-6-23 11:16
Geek_001 发表于 2014-6-23 10:07
System.out.println("This is show method!");
          //new Inner().inner();
你都把访问 ...

你在Main类中写的 new Outer().new Inner().inner(); 这不也是外部类调用内部类方法么!
作者: Geek_001    时间: 2014-6-23 11:31
波涛 发表于 2014-6-23 11:16
你在Main类中写的 new Outer().new Inner().inner(); 这不也是外部类调用内部类方法么! ...

亲,那在外部其它类中调用内部类方法。
作者: 郑飞    时间: 2014-6-23 13:34
亲,你这是inner()调show(),show()调inner(),

你把要做得业务放在show()里面可以,但是别再调inner()了.
作者: Geek_001    时间: 2014-6-23 13:36
郑飞 发表于 2014-6-23 13:34
亲,你这是inner()调show(),show()调inner(),

你把要做得业务放在show()里面可以,但是别再调inner()了. ...

要求是外部类得访问内部类函数啊!
作者: 郑飞    时间: 2014-6-23 13:52
本帖最后由 郑飞 于 2014-6-23 13:55 编辑
Geek_001 发表于 2014-6-23 13:36
要求是外部类得访问内部类函数啊!


那能不能把inner()里面的show()去掉,我没看明白这个show()做什么用的啊.

好吧,我再看看内部类视频去..;P

作者: Geek_001    时间: 2014-6-23 15:07
郑飞 发表于 2014-6-23 13:52
那能不能把inner()里面的show()去掉,我没看明白这个show()做什么用的啊.

好吧,我再看看内部类视频去.. ...

正好帮你复习一下内部类,不用谢了,哇喔!:P




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