任何人都可以告诉我在创建一个construtor来调用另一个类文件中的方法时出错了。它告诉我构造函数不能应用于给定的类型
答案 0 :(得分:1)
如果从Student类中删除构造函数声明,则隐式空构造函数将存在。
但是如果你明确声明了像public Student(String firstname, String surname, String total)
这样的构造函数,那么空构造函数将无法使用,除非你明确地将它添加到你的类中。
public Student() { };
然后你调用不存在的方法:
newStudent.firstName("my name");
您要在Student对象中声明的方法是setFirstName(String firstName)
最后在println调用中,您试图直接访问对象的attribut而不是使用getters方法。
答案 1 :(得分:0)
你的学生班不像你那样有一个空的构造函数:
Student newStudent = new Student();
所以你有一个构造函数应该采用三个字符串:
public Student(String firstname, String surname, String total) {
因此,要解决您的问题,您有两种方法:
创建一个不带任何属性的空构造函数:
public Student() {
}
您可以使用setAtt设置值,例如:
newStudent.setFirstName("my name");
您应该使用以下三个值调用构造函数:
Student newStudent = new Student("name 1", "name 2", "name 3");
您无法为另一个类中的属性设置值,如下所示:
newStudent.firstName("my name");
你可以这样:
newStudent.firstName = "my name";
答案 2 :(得分:0)
我为纠正代码做了一些更改:
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,它可以为您创建Getters和Setters(在Source
中)
您不需要total
attribut,因为它只是其他2个的连接,您永远不会单独更改它,如果它发生更改,则会因为其中一个更改attributs,只有一个getFulName()
,它将取回两个名字
最后,如果你想在之后设置值,你可以创建一个空构造函数,=""
每个
public Student() {
this.firstName = "";
this.surname = "";
}