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

持有对方引用比如 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习之数据库中的范式和反范式

范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库。 反范式&…

Java开发中如何用JDBC连接起数据库?

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口&…

Java程序员最值得学习的10大技术

程序员们是最具有挑战性的工作,我们最大的挑战就是保持自己了解新的技术。技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架。 就拿2017年来说,AR、VR、区块链、人工智能等等已经扑面而来了。除了这些离我们较远的,说几个离我们…

Java开发环境搭建详细步骤

安装JDK 首先下载jdk进官网下载jdk 选择相应的系统。 一键安装即可。 安装后会有两个jre,一个jdk内部的,和jdk外部的 关于两套jre的解释 一个jre文件在JDK的外部,一个jre文件在JDK内部,这就是所谓的专用JRE和公用JRE 专用 J…

这样学习JAVA 基础才能又快又稳!

微服务架构 企业和服务提供商正在寻找更好的方法将应用程序部署在云环境中,微服务被认为是未 来的方向。通过将应用和服务分解成更小的、松散耦合的组件,它们可以更加容易升级和扩展。 目前, 越来越流行的微服务技术是需要大家重视的。Spri…

Java设计模式之外观模式

外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度。 外观模式提供了一个统一的接口,用来访问…

Java编程初学者看什么书籍比较合适?

每次看到网上有很多想学习Java技术的小伙伴都在寻找一些书籍和视频,作为一个初学者,Java编程初学者 看什么样的书籍比较适合较适合呢?或者说,如何才能轻松入门又能深入学习呢?当然了这不是一本书就能解决的事。小编分享一下《Java核心技术》…

java开发,年薪15W的和年薪50W的差距

在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase、Hadoop、MQ、Netty、SpringCloud等等 。 一些独角兽公司以及腾讯、阿里、百度、网易等知名大厂对Java人才的需求量连年升级&a…

主流java框架理解

小编说一下分布式管理事务 简单的来说呢,分布式事务其实就是一次大的操作分成了好的小的操作,这些小的操作分别部署在不同的服务器上,而且属于不同的应用,分布式的事务其实就是保证这些小的事务要么都成功,要么都失败…

java中的多线程的示例

在讨论多线程之前,让我们先讨论线程。线程是进程中轻量级的最小部分,可以与同一进程的其他部分(其他线程)并发运行。线程是独立的,因为它们都有独立的执行路径,这就是为什么如果一个线程中发生异常,它不会影响其他线程…

几个改变世界的java工具

Java的开源生态系统强大而健康,这是我们创建OSCON Java的主要原因之一。在过去的十年中,有几个项目已经超越了简单的采用,并在Java世界中发挥了主导作用,进入了软件开发的一般领域,有些甚至深入到用户的日常生活中。 …

java网络篇-tcp的握手和挥手!

package com.wql.test; public class Test6 { public static void main(String[] args) { test1(ErrorType.ERROR_2); } public static void test1(ErrorType type){ switch(type){ case ERROR_1: System.out.println("参数type"type",value"type.…

java enum枚举使用例子

package com.wql.test; public class Test6 { public static void main(String[] args) { test1(ErrorType.ERROR_2); } public static void test1(ErrorType type){ switch(type){ case ERROR_1: System.out.println("参数type"type",value"type.…

经典Java编程面试题分析

求职者参加企业面试是进入职场的一个必经阶段,企业的面试官一般都用哪些问题来考求职者呢?不少求职人员认为,面试官提题出的问都是随机的,没有一定的规律。其实面试官基于想多方面了解面试者的情况下,会通过特定的提问…

Java高级架构师需要掌握什么?

没有谁能够随随便便的就成功,也没有谁能够随随便便就成为一名高级Java架构师。在Java行业中,如果按照排序,Java架构师一定是排在最顶端的,所以成为高级Java架构师,也是得有高超的Java技能,并且还得有着一定…

Java的三种工厂模式

一、简单工厂模式 简单工厂的定义:提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类 实现汽车接口 public interface Car { String getName(); } 奔驰类 public class Benz im…

浅谈Java中类加载机制

首先来了解一下jvm(java虚拟机)中的几个比较重要的内存区域,这几个区域在java类的生命周期中扮演着比较重要的角色: 方法区:在java的虚拟机中有一块专门用来存放已经加载的类信息、常量、静态变量以及方法代码的内存区…

Java学习四步曲,助你成长!

对于很多新手来说,可能JAVA的学习会很难。这种难度体现在语言的专业性、学习的不系统、条理的不清晰以及缺乏足够的耐心。实际上想要学习好JAVA,除了有足够的心理准备,还要有挑战JAVA终极四部曲的信心和勇气,那么四部曲是什么&…

Java里的 for (;;) 与 while (true),哪个更快?

在JDK8u的jdk项目下做个很粗略的搜索: 并没有差多少。 其次,for (;;) 在Java中的来源。个人看法是喜欢用这种写法的人,追根溯源是受到C语言里的写法的影响。这些人不一定是自己以前写C习惯了这样写,而可能是间接受以前写C的老师、…

Java中的null到底是什么?

让我们从下面的陈述开始: String xnull; 1. 这句话到底是什么意思? 回想一下什么是变量,什么是值。 一个常见的比喻是变量类似于一个盒子。 就像您可以使用一个框来存储某些东西一样,您也可以使用一个变量来存储一个值。 在声明变量时…