java - 如何解决java聚合中的错误输出错误?

标签 java class inheritance methods output

我的代码工作正常,但在输出中,两名员工都有相同的地址。为什么会发生这种情况以及如何解决?

package practice;

class address{
    static String country,state,cityname;
    public address(String country, String state, String cityname) {
    this.country=country;
    this.state=state;
    this.cityname=cityname;
    }
}
class employee{
    String name;
    int id;
    int age;
    address add;
    public employee(String name, int id, int age,address add) {
    this.name=name;
    this.id=id;
    this.age=age;
    this.add=add;
    }
    void display() {
        System.out.println(name+" "+id+" "+age);
        System.out.println("the employee stays at"+ address.country+" "+ 
        address.state+" "+address.cityname);
    }
}
public class Document {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        address a2 = new address("A","B","C");
        address a1 = new address("D","E","F");
        employee e1 = new employee("lmn",123,20,a2);
        employee e2 = new employee("pqr", 456,24,a1);
        e1.display();
        e2.display();
    }
}

最佳答案

问题出在地址中的静态变量:

class address{
    static String country,state,cityname;
...

删除static关键字。

同时将您的属性设为私有(private)并添加 getter 和 setter。

注意 Java 命名约定。类名应以大写字符开头

关于java - 如何解决java聚合中的错误输出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59803839/

相关文章:

java - 如何使 Java EE 中的授权可外部重新配置(在 war 文件之外)并可热重新配置?

java - NUMERIC(p,s) 的正则表达式 p=精度且 s=小数位数

java继承字段设置与构造函数

c++ - 如何在创建新对象时使用 = 运算符?

c++ - 构造函数中对 vtable 的 undefined reference

java - 关于在使用 Controller 基类时继承如何影响 Spring Controller 类的问题

java - 指定用户过滤器时出现 NoClassDefFoundError

java - 如何从二叉搜索树中删除?

c++ - 父子破坏顺序

html - Selenium - 在 DIV 下查找子元素