爲什麼我的getter和setters在首次實例化類的實例時生成'null'?當我自己設置屬性時,它們可以工作,但是它們似乎並沒有適當地通過構造函數?Java getter和setter不起作用
public class StudentClass {
public static void main (String[] args)
{
System.out.println("Number of Students: " + Student.getClassNumber());
Student s1 = new Student("Jack","Sprat","9 Monroe Street","New York", "NY", "[email protected]"); //instantiate
Student s2 = new Student("Arnold","Lane","15 Broadway","Bronx", "NY", "[email protected]"); //instantiate
Student s3 = new Student("Brian","Wilson","409 Surf Ave","Brooklyn", "NY", "[email protected]"); //instantiate
Student s4 = new Student("Rosie","OGrady","190 Bowery","New York", "NY", "[email protected]"); //instantiate
Student s5 = new Student("Gilbert","Sullivan","188 Savoy Street","Colonia", "NJ", "[email protected]"); //instantiate
System.out.println(s1.toString()); //call the toString() method
System.out.println(s2.toString());
System.out.println(s3.toString());
System.out.println(s4.toString());
System.out.println(s5.toString());
String before = s1.getFirstname() + " " + s2.getLastname(); //call getters
System.out.println("\nBefore change: " + before);
s1.setLastname("Paulson");
s2.setFirstname("George");
s3.setState("NJ");
s3.setCity("Wayne");
System.out.println("After change: " + s2.getFirstname() +
" " + s1.getLastname());
System.out.println();
System.out.println(s1.toString()); //call the toString() method
System.out.println(s2.toString());
System.out.println(s3.toString());
System.out.println(s4.toString());
System.out.println(s5.toString());
}
}
class Student {
private static int classNumber;
private static String className = "Java 101";
private static String Instructor = "James Gosling";
private int studentId = 999;
private String firstname;
private String lastname;
private String address;
private String city;
private String state;
private String email;
Student(String first, String last) {
firstname = first;
lastname = last;
classNumber += 1;
studentId += 1;
}
Student(String first, String last, String location, String town, String province,
String ping) {
this(first,last); //call first constructor with two variables
location = address;
town = city;
province = state;
ping = email;
}
static int getClassNumber() //class method (getter)
{
return (classNumber);
}
static String getClassName()
{
return (className);
}
static String getInstructor()
{
return (className);
}
int getStudentId() //instance method (getter)
{
return (studentId);
}
String getFirstname()
{
return (firstname);
}
String getLastname()
{
return (lastname);
}
String getAddress()
{
return (address);
}
String getCity()
{
return (city);
}
String getState()
{
return (state);
}
String getEmail()
{
return (email);
}
static void setClassNumber(int classNumber) //static method (setter)
{
Student.classNumber = classNumber; //"Employee" to indicate static field
}
static void setClassName(String className) //static method (setter)
{
Student.className = className; //"Employee" to indicate static field
}
static void setInstructor(String Instructor) //static method (setter)
{
Student.Instructor = Instructor; //"Employee" to indicate static field
}
void setFirstname(String firstname)
{
this.firstname = firstname;
}
void setLastname(String lastname)
{
this.lastname = lastname;
}
void setAddress(String address)
{
this.address = address;
}
void setCity(String city)
{
this.city = city;
}
void setState(String state)
{
this.state = state;
}
void setEmail(String email)
{
this.email = email;
}
public String toString() // toString instance method
{
String studentProfile =
"\t Class Name: " + className +
"\t Instructor: " + Instructor +
"\t Number of Students: " + classNumber +
"\t Name: " + firstname + " " + lastname +
"\t Address: " + address +
"\t City: " + city +
"\t State: " + state +
"\t Email: " + email +
"\t ID: " + studentId;
return (studentProfile);
}
}
感謝您的答覆!對我而言,這是另一個滑稽的疏忽。 –
@ J.D.Shatz不用客氣。 :) –