黑马程序员技术交流社区
标题:
函数调用的疑惑
[打印本页]
作者:
黄云南
时间:
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