黑马程序员技术交流社区

标题: 函数调用的疑惑 [打印本页]

作者: 黄云南    时间: 2012-3-14 18:08
标题: 函数调用的疑惑
class  A
{
        public void show(B b)
        {
                b.show1();
        }
}
class  B
{
        public void show1( )
        {
                System.out.println("Hello World!");
        }
}
在类A中show函数只有类B的引用b;却可以用引用b调用类B的成员函数show1();
上述代码是可以编译通过的。类中的非静态成员不是都要用类的对象去调用吗?
求解啊!
作者: 于紫洋    时间: 2012-3-14 18:19
b就是B的对象吧,运行的话应该要往A的show();里传的是B的对象
作者: 段浩亮    时间: 2012-3-14 18:32
楼上说的对 当你调用类A中的show()函数时往里面传的就是一个类B的对象
你要先创建一个B的对象,再传进去,还是用B的对象调用的show1()



作者: 王思兰    时间: 2012-3-14 18:34
B是类名。b是对象,非静态可以调用:b.方法   静态调用:B。方法
作者: 张润政    时间: 2012-3-14 18:58
个人理解:参数的作用是告诉你我这里接收的是B这个类型的对象b。并且我这个对象可以操作我本类的方法show1(),这应该叫做形式参数。它是可以调用自己类的方法的。
当你在创建了A类的对象之后要在A类中的show()方法中传入B类的实际参数,也就是B类的一个具体的对象。这样才能运行。否则,只有形式参数,而你没有用A的对象调用传入了一个具体B对象的show()方法。这个不具有执行意义。
作者: 崔岩    时间: 2012-3-14 19:38
你可以实际编程调用一下show方法,你自然会想通是怎么回事了要调用show首先必须A a =new A(); 然后再  a.show()对吧,这个时候show函数是要穿参数的,您自然又得new一个 B b = new B();  最后是 a.show(b); 这样不就都全了么,所以那样定义是没问题的,show1是public 的,当然可以在外界以一个b的实例来调用它。




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