如何将 A 类与 B 类关联,并从 A 类中的方法返回对 B 类的引用?

Posted

技术标签:

【中文标题】如何将 A 类与 B 类关联,并从 A 类中的方法返回对 B 类的引用?【英文标题】:How can I associate Class A with Class B, and the return a reference to class B from a method located in class A? 【发布时间】:2020-02-06 20:52:41 【问题描述】:

A类

    public class Customer 

// Add instance varables
private String lName;
private String fName;
private String address;
private String zip;

//    A constructor that initializes the last name, first name, address, and zip code.
public Customer(String lN, String fN, String addr, String zi) 
    lName = lN;
    fName = fN;
    address = addr;
    zip = zi;



//    setAccount(Account a) - Sets the Account for this customer




//    getAccount() - Returns a reference to the Account object associated with this customer
public Account getAccount()
    return();

我不知道如何从另一个类中“引用”一个对象。我无法创建该对象,因为我希望一切都是通用的,并且能够在以后创建并使这两个类正确地相互关联。

B类

    public class Account 

// Add instance variables
private String accountNumber;
private double balance;
private Customer customer;


// A constructor that initializes the account number and Customer, and sets the blance to zero.
public Account(String aN, Customer c) 
    accountNumber = aN;
    balance = 0.00;
    customer = c;

所以我不明白如何在A类中创建set account和get account方法

【问题讨论】:

您正在尝试在此处创建循环引用;记住Customer 可能有多个Account 【参考方案1】:

这是一个鸡与鸡的问题。必须首先实例化一个对象。它是哪一种并不重要,但必须是它。如果客户和帐户永久相互绑定,我强烈建议将字段设置为“最终”。

class Customer 

    private final Account account;

    public Customer() 
        account = new Account(this);
    

    public Account getAccount() 
        return account;
    



class Account 

    private final Customer customer;

    public Account(Customer customer) 
        this.customer = customer;
    

    public Customer getCustomer() 
        return customer;
    


【讨论】:

【参考方案2】:

假设客户有一个帐户,从客户添加:

private Account account;

public void setAccount( Account account ) this.account = account; 

public Account getAccount(  ) return account; 

并从帐户中删除与客户相关的所有内容。然后您可以使用来自 A(客户)的 getAccount() 来返回对 B(帐户)的引用

如果您想要其他方式(帐户有客户):

public class Account 

// Add instance variables
private String accountNumber;
private double balance;
private Customer customer;


public Account(String aN) 
    accountNumber = aN;
    balance = 0.00;


public Customer getCustomer() return customer;
public void setCustomer(Customer customer) this.customer = customer;


...然后您可以使用 A(帐户)中的 getCustomer() 来获取对 B(客户)的引用

哪个类引用另一个完全取决于您的解决方案的设计。

【讨论】:

以上是关于如何将 A 类与 B 类关联,并从 A 类中的方法返回对 B 类的引用?的主要内容,如果未能解决你的问题,请参考以下文章

java第五周学习

面向对象 类与类之间的关系之依赖和关联

如何在C#中,在一个类里调用另外一个类的方法

java一个类如何获得另一个类中的某个值

接口中的内部类与类中

类与类之间的调用