java编程中的持有对方引用是什么意思?有什么作用?

2019-01-23  本文已影响25人  墨雨轩夏

持有对方引用比如 A类有: h、j、 k, 3种方法,B类有 h 1种方法,但我B类必须要用到 A 类的 k方法怎么办呢?那么下面就要引入引用了!我在 B 类中创建个A类的引用,例如 如果在同一包下就不用导包了

import 包名.A

public class B {

A a=null; 此a就是B类中 对A的引用

a=new A(); 用此引用创建了A类的实例

}

持有对方引用的目的就是为了 更灵活的在对象与对象之间进行 配合 更具有灵活性

在一个类中访问另外一个类的成员变量,可以利用持有对方的引用来访问

本程序实现一个简单的加法运算器带图形界面的。

程序如下:先是不持有对方引用

import java.awt.*;

import java.awt.event.*;

public class TestMath {

public static void main(String[] args) {

MyFrame9 f = new MyFrame9();

f.MyMath();

}

}

class MyFrame9 extends Frame {

TextField tf1,tf2,tf3;

public void MyMath() {

tf1 = new TextField("10");

tf2 = new TextField("10");

tf3 = new TextField("20");

Label label1 = new Label("+");

Button b1 = new Button("=");

b1.addActionListener(new MyMonitor(tf1,tf2,tf3));

setLayout(new FlowLayout());

add(tf1);

add(label1);

add(tf2);

add(b1);

add(tf3);

pack();

setVisible(true);

}

}

class MyMonitor implements ActionListener {

TextField tf1,tf2,tf3;

MyMonitor(TextField tf1,TextField tf2,TextField tf3) {

this.tf1 = tf1;

this.tf2 = tf2;

this.tf3 = tf3;

}

public void actionPerformed(ActionEvent e) {

int n1 = Integer.parseInt(tf1.getText());

int n2 = Integer.parseInt(tf1.getText());

tf3.setText(""+(n1+n2));

}

}

再在源程序上修改为:持有对方引用

import java.awt.*;

import java.awt.event.*;

public class TestMath {

public static void main(String[] args) {

MyFrame9 f = new MyFrame9();

f.MyMath();

}

}

class MyFrame9 extends Frame {

TextField tf1,tf2,tf3;

public void MyMath() {

tf1 = new TextField("10");

tf2 = new TextField("10");

tf3 = new TextField("20");

Label label1 = new Label("+");

Button b1 = new Button("=");

b1.addActionListener(new MyMonitor(this));

setLayout(new FlowLayout());

add(tf1);

add(label1);

add(tf2);

add(b1);

add(tf3);

pack();

setVisible(true);

}

}

class MyMonitor implements ActionListener {

MyFrame9 mf = null;

MyMonitor(MyFrame9 mf) {

this.mf = mf;

}

public void actionPerformed(ActionEvent e) {

int n1 = Integer.parseInt(mf.tf1.getText());

int n2 = Integer.parseInt(mf.tf2.getText());

mf.tf3.setText(""+(n1+n2));

}

}

总结:很明显程序一要传每一个成员变量,比较不方便,而程序二相当于在跟一个持有全部成员变量的大管家在打交道,自然可以也可以跟成员变量打交道,方面了程序。

 为了让学习变得轻松、高效,今天给大家免费分享一套Java教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736

上一篇下一篇

猜你喜欢

热点阅读