A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄云南 中级黑马   /  2012-3-14 18:08  /  1482 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
上述代码是可以编译通过的。类中的非静态成员不是都要用类的对象去调用吗?
求解啊!

5 个回复

倒序浏览
b就是B的对象吧,运行的话应该要往A的show();里传的是B的对象
回复 使用道具 举报
楼上说的对 当你调用类A中的show()函数时往里面传的就是一个类B的对象
你要先创建一个B的对象,再传进去,还是用B的对象调用的show1()


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