#java
#java
Вопрос:
Я новичок в Java. Я создал общедоступный класс с именем Student, и я также создал для него тестовый класс. Дело в том, что я не знаю, как вызвать мой созданный класс «Student» внутри тестового класса. Я поместил оба класса в одну папку, но тестовый класс выдает сообщение об ошибках.
TestStudent.java
setName cannot be resolved or is not a field
setPhoneNum cannot be resolved or is not a field
setCgpa cannot be resolved or is not a field
setSubject cannot be resolved or is not a field
setAddress cannot be resolved or is not a field
Вот мой код для класса Student:
public class Student {
private String name;
private int phoneNum;
private double cgpa;
private String subject;
private String address;
//getters
public String getName(){
return name;
}
public int getPhoneNum(){
return phoneNum;
}
public double getCgpa(){
return cgpa;
}
public String getSubject(){
return subject;
}
public String getAddress(){
return address;
}
//setters
public void setName (String newName){
this.name = newName;
}
public void setPhoneNum (int newPhoneNum){
this.phoneNum = newPhoneNum;
}
public void setCgpa (double newCgpa){
this.cgpa = newCgpa;
}
public void setSubject (String newSubject){
this.subject = newSubject;
}
public void setAddress (String newAddress){
this.address = newAddress;
}
}
Вот мой код для класса TestStudent:
public class TestStudent {
public static void main(String[] args){
Student Alex = new Student();
Alex.setName = "Alexis";
Alex.setPhoneNum = 193;
Alex.setCgpa = 4.0;
Alex.setSubject = "English, Biology";
Alex.setAddress = "Rainbow Land";
System.out.println(Alex.getName());
}
}
Может ли кто-нибудь помочь мне в этом?
Комментарии:
1.
setName
является ли метод не полем экземпляра, поэтому вы должны вызывать его как вызов методаAlex.setName("alexis")
. Вы не можете напрямую обращаться к закрытому полюname
. Я думаю, вам следует узнать немного больше о концепцииencapsulation in Java
. Первая ссылка, которую я нашел: geeksforgeeks.org/encapsulation-in-java2. @nana установите ответ как принятый, если это вам поможет.
Ответ №1:
Я думаю, что ваш TestStudent
класс должен выглядеть так:
public class TestStudent {
public static void main(String[] args){
Student Alex = new Student();
Alex.setName("Alexis");
Alex.setPhoneNum(193);
Alex.setCgpa(4.0);
Alex.setSubject("English, Biology");
Alex.setAddress("Rainbow Land");
System.out.println(Alex.getName());
}
}
Вы создаете Student
объект, а затем вызываете установщики с аргументом в скобках. Вообще нет присваивания with =
. Это делается внутри методов setter.
Комментарии:
1. моя ошибка, я исправил это ранее, но не сохранил при повторном открытии файла. Я обновлю его здесь. Спасибо, что указали на это.