簡體   English   中英

使用 String 時,構造函數不能應用於給定類型

[英]Constructor cannot be applied to given type when using String

誰能告訴我在創建構造函數以調用另一個類文件中的方法時出錯的地方。 它告訴我構造函數不能應用於給定類型

如果從 Student 類中刪除構造函數聲明,則隱式空構造函數將存在。 但是,如果您顯式聲明了一個像public Student(String firstname, String surname, String total)這樣的構造函數,那么空構造函數將不可用,除非您將它顯式添加到您的類中。

public Student() { };

然后你調用不存在的方法:

newStudent.firstName("my name");

您要調用的方法,如在您的 Student 對象中聲明的那樣是setFirstName(String firstName)

最后,在 println 調用中,您嘗試直接訪問對象的屬性,而不是使用 getter 方法。

你 Student 類沒有像你那樣的空構造函數:

Student newStudent = new Student();

所以你有一個構造函數,它應該接受三個 String :

public Student(String firstname, String surname, String total) {

因此,要解決您的問題,您有兩種方法:

第一

創建一個不接受任何屬性的空構造函數,如下所示:

public Student() {
}

並且您可以將您的值與 setAtt 例如:

newStudent.setFirstName("my name");

2次

你應該像這樣用三個值調用你的構造函數:

Student newStudent = new Student("name 1", "name 2", "name 3");

筆記

您不能像這樣為另一個類中的屬性設置值:

newStudent.firstName("my name");

你可以這樣做:

newStudent.firstName = "my name";

我為更正代碼所做的一些更改:

public class Main {
    public static void main(String[] args) {
        Student newStudent = new Student("Toto", "FromStack");
        newStudent.setFirstName("Jack");
        System.out.println(newStudent.getFirstName());
        System.out.println(newStudent.getSurname());
        System.out.println(newStudent.getFullName());
    }
}
  • 您必須使用大量參數調用constructor函數

  • 最好將參數的可見性設置為private (查看Student )並使用Getters來訪問它們

  • 還可以使用Setters來更改值

這里也是:

public class Student {
    private String firstName;
    private String surname;

    public Student(String firstname, String surname) {
        this.firstName = firstname;
        this.surname = surname;
    }
    // First Name GETTER
    public String getFirstName() {
        return firstName;
    }
    // First Name SETTER
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    // Surname GETTER
    public String getSurname() {
        return surname;
    }
    // Surname SETTER
    public void setSurname(String surname) {
        this.surname = surname;
    }
    //Full Name GETTER
    public String getFullName() {
        return firstName+" "+surname;
    }
}
  • 如果您使用 Eclipse IDE,它可以為您創建 Getter 和 Setter(在Source

  • 您不需要total屬性,因為它只是其他 2 個屬性的串聯,您永遠不會單獨更改它,如果它發生更改,那將是因為 2 個屬性之一發生了更改,因此只需一個getFulName()取回兩個名字

最后,如果您想在之后設置值,則可以創建一個空的構造函數, =""不會為每個獲得“空”值

 public Student() {
            this.firstName = "";
            this.surname = "";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM