用Java覆盖print方法

时间:2017-05-12 03:19:40

标签: java arraylist methods override

我有一个关于覆盖的toString方法和数组列表的get方法的(语法?)问题。

我的第一堂课名为BAccount,创建一个包含姓名,余额和帐号的对象。

class Event < ApplicationRecord

  has_many :categorizations
  has_many :categories, through: :categorizations
  accepts_nested_attributes_for :categorizations

end

class Category < ApplicationRecord

  has_many :categorizations
  has_many :events, through: :categorizations

end

class Categorization < ApplicationRecord

  belongs_to :event
  belongs_to :category

end

我的测试人员类创建3个帐户,将它们添加到ArrayList并使用get方法打印每个帐户。

public class BAccount { 
private static int lastAssignedNumber=1000;
String uName;
double uBalance;
private int accountNumber;
public BAccount(String name, double balance) {
    uName=name;
    lastAssignedNumber++;
    uBalance=balance;
    accountNumber=lastAssignedNumber;
}

public void setName(String inputName) { 
    uName=inputName;
}

public void setBalance(double inputBalance) {
    uBalance=inputBalance;
}

public String getName() {
    return uName;
}

public double getBalance() {
    return uBalance;
}

public int getAccountNumber() {
    return accountNumber;
}

public String toString() { 
    return ("Account Holder Name: " + this.getName() +
            ", Acccount Balance: " + this.getBalance() +
            ", Account Number: " + this.getAccountNumber());
}

}

测试人员类创建3个帐户,将它们添加到ArrayList并使用get方法打印每个帐户。

我的问题是:ArrayList的get方法如何知道使用我的覆盖toString方法的格式进行打印?

1 个答案:

答案 0 :(得分:1)

ArrayList.get()并不知道!

此方法只返回对存储在get()的索引处的对象的引用。

println()最后调用该对象上的toString()。在Java中,要调用的方法的确切版本是从对象的确切类型派生的 - 在运行时动态生成。这被称为多态性,只是OO编程的基石。

该对象是您的类的一个实例,它覆盖了toString()...导致所需的和完全预期的结果。