简 耀 2023-02-10 08:30 采纳率: 100%
浏览 41
已结题

Java中同一个类的两个实例对象之间可以通信吗?也就是互相访问?有什么手段?

例如有一个类A,A有两个实例对象a1、a2,问a1可以访问到a2的成员变量或调用a2的成员方法吗?

  • 写回答

4条回答 默认 最新

  • Ralph Chen 2023-02-10 10:37
    关注

    同一个类的两个对象的话,可以使用单例模式,其实单例模式只会创建一个实例,只不多你在new的时候,它会将你的引用指向同一个对象,所以当你有多个引用a1,a2的时候,当a2发生的变更,a1的内容也同步变更,因为它们指向的是同一个实例,这样不知道能否满足你的需求

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • myenjoy_1 2023-02-10 08:47
    关注

    可以通过以下的情况
    1.组合
    也就是说一个类持有另一类的引用。

    class A{
        private final int demoA;
        private final B b;
    
        public A(int demoA, B b) {
          this.demoA = demoA;
          this.b = b;
          
          this.b.demoB = 1;
        }
      }
      
      
      class B {
        private int demoB;
    
        public B(int demoB) {
          this.demoB = demoB;
        }
      }
    
    1. 继承
      通过继承的方式,实现子类调用父类的参数与方法
     class A extends B{
        private final int demoA;
    
        public A(int demoA, int demoB) {
          super(demoB);
          this.demoA = demoA;
          
          this.demoB = demoB;
        }
      }
    
    
      class B {
        protected int demoB;
    
        public B(int demoB) {
          this.demoB = demoB;
        }
      }
    

    3.通过传参
    将实例化的对象通过传参的方式进行调用

     class A {
        private final int demoA;
    
        public A(int demoA) {
          this.demoA = demoA;
        }
        public void detail(B b){
          b.demoB = 1;
        }
      }
    
    
      class B {
        protected int demoB;
    
        public B(int demoB) {
          this.demoB = demoB;
        }
      }
    
    
    评论
  • 於黾 2023-02-10 09:44
    关注

    成员方法之所以叫成员方法,就是因为它要通过成员去访问
    你在a2里为什么要去访问a1的成员方法呢,什么目的呢
    如果一个方法跟类A的实例无关,那你就应该拿出来变成一个公共方法,而不要放进类里

    评论
  • 芒果-橙 Java领域新星创作者 2023-02-10 13:58
    关注

    你的场景是怎样的呢,需要用同一个类,不同的实例去相互访问

    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月18日
  • 已采纳回答 4月13日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 Qt 不小心删除了自带的类,该怎么办
  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!