具有相同数据java的不同对象

时间:2014-10-12 02:56:20

标签: java oop object

我创建了一个创建对象实例的类

public class EmployeeProfile {
    /////////INSTANCE VARIABLES/////////
    private static String fName;
    private static String lName;
    private static String email;
    private static String phone;


    ////////CONSTRUCTORS////////////
    public EmployeeProfile()
    {

    }

    public EmployeeProfile(String firstName, String lastName, String emailAdd, String pNumber)
    {
        fName = firstName;
        lName = lastName;
        email = emailAdd;
        phone = pNumber;
    } 
}

当我调用空构造函数并用自己创建的方法填充它时,一切都很好。但是当我使用第二个构造函数和参数调用一个带有新名称的新对象时,它们会覆盖第一个对象的数据!!

    EmployeeProfile prof1 = new EmployeeProfile();
    prof1.firstName("John");
    prof1.lastName("Doe");
    prof1.email("johndoe@yahoo.com");
    prof1.phone("555-555-5555");


    EmployeeProfile prof2 = new EmployeeProfile("Jane", "Doe", "janedoe@yahoo.com", "555-123-4567");

    System.out.println(prof1.getProfile());
    System.out.println(prof2.getProfile());

当我运行此prof1和prof2时,都返回prof2中的数据。我在这里做错了什么?

4 个答案:

答案 0 :(得分:2)

/////////INSTANCE VARIABLES/////////
private static String fName;
private static String lName;
private static String email;
private static String phone;

评论和代码不一致。 static表示类变量,而不是实例。因此,它们在类实例之间共享。

答案 1 :(得分:2)

你制作静态变量。

private static String fName;
private static String lName;
private static String email;
private static String phone;

当你创建一些变量static时,每次都会覆盖该值。 所以,请将其更改为,不带静态关键字。

e.g :private String fName;

答案 2 :(得分:1)

static表示变量在整个类中都是静态的。删除static,以便变量看起来像这样:

private String fName;
private String lName;
private String email;
private String phone;
祝你好运。

答案 3 :(得分:0)

问题是静态属性在该类的实例之间共享,这就是为什么要不断覆盖属性的原因。因此,您应该删除属性中的静态描述符。此外,在面向对象的编程范例中,总是建议通过它的getter& amp;来访问对象的属性。 setter方法。通过这些更改,代码将如下所示:

public class EmployeeProfile {
    /////////INSTANCE VARIABLES/////////
    private String fName;
    private String lName;
    private String email;
    private String phone;


    ////////CONSTRUCTORS////////////
    public EmployeeProfile()
    {

    }

    public EmployeeProfile(String firstName, String lastName, String emailAdd, String pNumber)
    {
        this.setfName(firstName);
        this.setlName(lastName);
        this.setEmail(emailAdd);
        this.setPhone(pNumber);
    }

    public String getfName() {
        return fName;
    }

    public void setfName(String fName) {
        this.fName = fName;
    }

    public String getlName() {
        return lName;
    }

    public void setlName(String lName) {
        this.lName = lName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    } 

}

希望它有所帮助。

Clemencio Morales Lucas。