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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马伟恒 中级黑马   /  2012-4-25 16:40  /  2444 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class A{
private B b = null ;
public void fun(){
  this.b = new B(this) ;
  this.b.fun() ;
}
public void print(){
  System.out.println("Hello World!!!") ;
}
};
class B{
private A a = null ;
public B(A a){
  this.a = a ;
}
public void fun(){
  this.a.print() ;
}
};
public class ThisDemo07{
public static void main(String args[]){
  new A().fun() ;
}
};

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

6 个回复

倒序浏览
lass A{
        private B b = null ;//
        public void fun(){
          this.b = new B(this) ;//把当前对象传递进去 也就是A对象
          this.b.fun() ;//执行的是属于A对象里的b对象
        }
        public void print(){
          System.out.println("Hello World!!!") ;
        }
        };

class B{
        private A a = null ;
        public B(A a){
          this.a = a ;//B对象里的a
        }
        public void fun(){
          this.a.print() ;//执行的是属于B对象里的a对象里的print()
        }
        };

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
class A{
private B b = null ;
public void fun(){
  this.b = new B(this) ; //this.b中的this是防止局部变量隐藏成员变量,B(this)指的是传入本类对象的引用
  this.b.fun() ;            //this.b是一个B类类型的对象,这里调用B类中的fun()方法。
}
public void print(){
  System.out.println("Hello World!!!") ;
}
};
class B{
private A a = null ;
public B(A a){
  this.a = a ;      //这里的this是防止局部变量隐藏成员变量,相当于:this.成员变量
}
public void fun(){
  this.a.print();   //this.a是一个A类类型的对象,这里调用A类中的print()方法。
}
};
public class ThisDemo07{
public static void main(String args[]){
  new A().fun() ;   //创建一个A类类型的匿名对象,然后调用其中fun()方法;
}
};
回复 使用道具 举报
  1. class A
  2. {
  3.         private B b = null ;
  4.         public void fun()
  5.         {
  6.           this.b = new B(this) ;//①this就是相当于new A();谁调用就代表谁
  7.          
  8.           //b=new B(new A());

  9.           this.b.fun() ;  //③this.b-->B a=new B();想当于调用B类中的fun()
  10.         }
  11.         public void print()
  12.         {
  13.                 System.out.println("Hello World!!!") ;
  14.         }
  15. }
  16. class B
  17. {
  18.         private A a = null ;
  19.         public B(A a)
  20.         {
  21.           this.a = a; //② this.a=new A();也就是:A a=new A();
  22.         }
  23.         public void fun()
  24.         {
  25.           this.a.print() ;//④this.a-->A a=new A();相当于调用A类中的print()
  26.         }
  27. }
  28. public class ThisDemo2
  29. {
  30.         public static void main(String args[])
  31.         {
  32.                 new A().fun() ;
  33.         }
  34. }
复制代码
还有就是楼主为什么每个类结束后要加分号呢!~

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 马伟恒 于 2012-4-25 17:50 编辑
黄或俊 发表于 2012-4-25 17:38
还有就是楼主为什么每个类结束后要加分号呢!~

:handshake
回复 使用道具 举报
class A{
private B b = null ;
public void fun(){
   this.b = new B(this) ;//在实例B对象时 要接受一个参数就是把当前的A对象穿给B
   this.b.fun() ;//调用A对象里的成员变量B对象的fun方法
}
public void print(){
   System.out.println("Hello World!!!") ;
}
};
class B{
private A a = null ;
public B(A a){
   this.a = a ;//将传进来的参数(A对象)赋给当前对象的成员变量的A对象
}
public void fun(){
   this.a.print() ;调用B对象里的成员变量A对象的print方法
}
};
public class ThisDemo07{
public static void main(String args[]){
   new A().fun() ;
}
};
回复 使用道具 举报
只是互相建立了引用关系,并不涉及到多态,不会引起可能的混淆,只是简单的调用过程而已.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马