haben Sie einen Blick auf die folgende Klasse:Die Beziehung zwischen einem nicht-arg Konstruktor und einen Konstruktor mit Argumenten
public class Loan {
private double annualInterestRate;
private int numberOfYears;
private double loanAmount;
private java.util.Date loanDate;
// Default constructor
public Loan() {
this(2.5, 1, 1000);
}
}
Für die Kodierzeilen this(2.5, 1, 1000);
ich die folgende Fehlermeldung in Eclipse: „Der Konstruktor Loan (double, int, int) ist undefiniert ". Dieser Fehler verschwindet, wenn eine neue Konstruktor mit Argumenten hinzu:
// Construct a loan with specified annual interest rate, number of years and loan amount
public Loan(double annualInterestRate, int numberOfYears, int loanAmount) {
this.annualInterestRate = annualInterestRate;
this.numberOfYears = numberOfYears;
this.loanAmount = loanAmount;
loanDate = new java.util.Date();
}
Warum die Schaffung des Konstruktor mit Argumenten der „undefiniert“ Fehler aus dem Standardkonstruktors entfernen? Wie sind diese zwei verschiedenen Konstruktoren miteinander verwandt? Wie kann ich wissen, dass die Werte in this(2.5, 1, 1000)
den richtigen Datenfeldern zugewiesen sind? Ich nehme an, 2,5 sollte annualInterestRate
, 1 bis numberOfYears
und 1000 bis loanAmount
zugewiesen werden.
Der Fehler verschwindet, weil Sie nun * den Konstruktor * definiert haben. Wenn Sie versuchen, eine Methode aufzurufen, die nicht existiert, erhalten Sie eine Fehlermeldung. Wenn die Methode existiert, erhalten Sie keinen Fehler. – David
müssen Sie wissen, was die Bedeutung von 'this' in Java ist –