学生求问 谁能给我讲解下 《持有对方引用》 看了马士兵的视频 也看了书 但是就是不理解最好能给我 举点 更加直接明了的 例子谢谢老师们 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ……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)); }}在一个类中访问另外一个类的成员变量,可以利用持有对方的引用来访问。上面就是持有对方引用的方法 先看第二段代码int n1 = Integer.parseInt(tf.num1.getText());这条语句想要得到num1中的数据,但是num1是TFFrame类的成员变量,可是MyMonitor类想用 怎么办呢?于是乎btnEqual.addActionListener(new MyMonitor(this));我把TFFrame类的引用传给了MyMonitor类的构造方法, this.tf = tf;这回我就能用你TFFrame的成员变量了……不过我不推荐这么用 ,你完全可以用内部类或者匿名类,就没这么抽象了 那为什么要写他的 构造方法 呢 public MyMonitor(TFFrame tf) { this.tf = tf; }直接用他的默认构造方法 不可以吗 每个对象都有一个引用值指向它,可以理解为对象名的值传递一个对象的引用就是把对象名的值拷贝给另一个对象名ref(自己定义),通过ref就可以操纵原来的对象了 [Quote=引用 13 楼 cl61917380 的回复:]引用 2 楼 coldanimal 的回复:持有对方引用 就是持有指向那个对象的指针引用对于C来说也可以理解为指针比如你想去买肉馒头 但这个锅子里面一共有20个馒头 菜馒头,萝卜丝馒头,豆沙馒头等 当然还有肉馒头你要去锅子里面找肉馒头 你需要知道肉馒头的位置 然后再去拿 引用就是告诉你肉馒头在锅子的哪个位置肉馒头就是 对象, 锅子就是内存 问一个很基础的问题! java中如何捕获窗口外的鼠标和键盘事件 關於JOptionPane.showMessageDialog 关于用jsp做聊天室,请大家给点好的意见 关于“TableHeader.cellBorder“ 菜鸟问题,请叫各位高手newInstance()这个方法 Thinking in Java中的 import com.bruceeckel.swing.*; 是哪里来的? 自动生成密码。(up者有分) 谁能给我提供一个非绑定的例子?详细请入 如何使JPanel先于其上的Component得到MouseEvent 哥哥姐姐们,能帮我解答吗?这个小问题。。 郁闷的面试题
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));
}
}在一个类中访问另外一个类的成员变量,可以利用持有对方的引用来访问。
上面就是持有对方引用的方法
int n1 = Integer.parseInt(tf.num1.getText());
这条语句想要得到num1中的数据,但是num1是TFFrame类的成员变量,可是MyMonitor类想用 怎么办呢?于是乎btnEqual.addActionListener(new MyMonitor(this));
我把TFFrame类的引用传给了MyMonitor类的构造方法,
this.tf = tf;这回我就能用你TFFrame的成员变量了……不过我不推荐这么用 ,你完全可以用内部类或者匿名类,就没这么抽象了
public MyMonitor(TFFrame tf) {
this.tf = tf;
}直接用他的默认构造方法 不可以吗
传递一个对象的引用就是把对象名的值拷贝给另一个对象名ref(自己定义),通过ref就可以操纵原来的对象了
引用 2 楼 coldanimal 的回复:
持有对方引用 就是持有指向那个对象的指针引用对于C来说也可以理解为指针比如你想去买肉馒头 但这个锅子里面一共有20个馒头 菜馒头,萝卜丝馒头,豆沙馒头等 当然还有肉馒头你要去锅子里面找肉馒头 你需要知道肉馒头的位置 然后再去拿 引用就是告诉你肉馒头在锅子的哪个位置肉馒头就是 对象, 锅子就是内存