谁能给我讲解下 《持有对方引用》 看了马士兵的视频  也看了书  但是就是不理解
最好能给我 举点  更加直接明了的  例子
谢谢老师们

解决方案 »

  1.   

    ……class TFFrame extends Frame {
     TextField num1, num2, num3;
     public void launchFrame() {
      num1 = new TextField(10);
      num2 = new TextField(10);
      num3 = new TextField(15);
      Label lblPlus = new Label("+");
      Button btnEqual = new Button("=");
      btnEqual.addActionListener(new MyMonitor(this));
      setLayout(new FlowLayout());
      add(num1);
      add(lblPlus);
      add(num2);
      add(btnEqual);
      add(num3);
      pack();
      setVisible(true);
     }
    } ……………………class MyMonitor implements ActionListener {
     TFFrame tf = null;
     
     public MyMonitor(TFFrame tf) {
      this.tf = tf;
     }
    public void actionPerformed(ActionEvent e) {
      int n1 = Integer.parseInt(tf.num1.getText());
      int n2 = Integer.parseInt(tf.num2.getText());
      tf.num3.setText("" + (n1+n2));
      
     }
    }在一个类中访问另外一个类的成员变量,可以利用持有对方的引用来访问。
    上面就是持有对方引用的方法
      

  2.   

    先看第二段代码
    int n1 = Integer.parseInt(tf.num1.getText());
    这条语句想要得到num1中的数据,但是num1是TFFrame类的成员变量,可是MyMonitor类想用 怎么办呢?于是乎btnEqual.addActionListener(new MyMonitor(this));
    我把TFFrame类的引用传给了MyMonitor类的构造方法,
      this.tf = tf;这回我就能用你TFFrame的成员变量了……不过我不推荐这么用 ,你完全可以用内部类或者匿名类,就没这么抽象了
      

  3.   

    那为什么要写他的 构造方法 呢
     public MyMonitor(TFFrame tf) {
      this.tf = tf;
     }直接用他的默认构造方法 不可以吗
      

  4.   

    每个对象都有一个引用值指向它,可以理解为对象名的值
    传递一个对象的引用就是把对象名的值拷贝给另一个对象名ref(自己定义),通过ref就可以操纵原来的对象了
      

  5.   

    [Quote=引用 13 楼 cl61917380 的回复:]
    引用 2 楼 coldanimal 的回复:
    持有对方引用 就是持有指向那个对象的指针引用对于C来说也可以理解为指针比如你想去买肉馒头 但这个锅子里面一共有20个馒头 菜馒头,萝卜丝馒头,豆沙馒头等 当然还有肉馒头你要去锅子里面找肉馒头 你需要知道肉馒头的位置 然后再去拿 引用就是告诉你肉馒头在锅子的哪个位置肉馒头就是 对象, 锅子就是内存