Java:关于对象的概念

标签 java object

    public class ex11_2 {
    public static void main(String[] args){
        Object a=new Person("abc1","def1","ghi1");
        System.out.println(a.toString());
        Object b=new Person("abc2","def2","ghi2");

        System.out.println(a.toString());
    }
}

class Person{
    private static String name;
    private static String address;
    private static String phoneNo;

    public Person(){
    }

    public Person(String name,String address,String phoneNo){
        setName(name);
        setAddress(address);
        setPhoneNo(phoneNo);
    }

    public String toString(){
        return super.toString()+(" "+getName()+","+getAddress()+","+getPhoneNo()+".");
    }

    public static String getName() {
        return Person.name;
    }

    public static void setName(String name) {
        Person.name = name;
    }

    public static String getAddress() {
        return address;
    }

    public static void setAddress(String address) {
        Person.address = address;
    }

    public static String getPhoneNo() {
        return phoneNo;
    }

    public static void setPhoneNo(String phoneNo) {
        Person.phoneNo = phoneNo;
    }
}

大家好,我是一名Java编程初学者,想请教一些关于OOP的问题。在这个小程序中,我创建一个 Person 类并测试它的 toString() 方法。

测试结果为:

Person@635b9e68 abc1,def1,ghi1.
Person@635b9e68 abc2,def2,ghi2.

我想知道为什么b创建后b的数据字段会取代a的数据字段。 谢谢

最佳答案

您的成员变量是静态的,不会附加到该类的任何实例。

private static String name;
private static String address;
private static String phoneNo;

静态成员将在类的实例中可用。要更正它,请将它们更改为非静态成员变量。

private String name;
private String address;
private String phoneNo;

关于Java:关于对象的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802689/

相关文章:

Javascript - 将对象键打印到 HTML

javascript - 链式链接返回对象 Javascript

python - 当我们导入一个模块时,我们是否只是让主模块可以访问导入模块的命名空间?

java - 在运行时动态解析 .proto 文本文件以生成描述符

java - 显示相同的 Android fragment 两次并使用调用 getById

java - 我如何监控用户的 Activity

java - 为什么我的 Android 应用程序中的计算(Eclipse)出现错误?

java - 如何在 Mule 连接器中添加下拉列表项?

scala - 将对象声明为 "final"有什么意义?

javascript对象追加子子对象