java - 两个类制作同一个实例? java

标签 java class object instance inner-classes

所以我在大学参加了这次考试,内容是创建包含作者、标题、内容和译者的图书类。

主要要求是仅创建 1 个类并在其中创建内部类(作者和翻译者)

和一个主类来测试它。

问题是,当我创建作者和翻译者对象并尝试更改他们的名称时,他们都会更改名称。

这是我的代码:

图书类别:

public class Book {
    private Author author;
    private Translator translator;
    private String title;
    private String text;

    public interface IPerson {
        public void setFirstName(String name);
        public String getFirstName();
        public void setLastName(String name);
        public String getLastName();
    }
    //Author
    public class Author implements IPerson{
        private String firstName;
        private String lastName;

        public Author(String f, String l){
            firstName = f;
            lastName = l;
            author = this;
        }

        public void setFirstName(String name){
            this.firstName = name;
        }

        public String getFirstName(){
            return this.firstName;
        }

        public void setLastName(String name){
            this.lastName = name;
        }

        public String getLastName(){
            return this.lastName;
        }

    }
    public Author getAuthor(){
        return this.author;
    }
    //Translator
    public class Translator extends Author{

        public Translator(String f, String l) {
            super(f, l);
            translator = this;
        }
    }
    public Translator getTranslator(){
        return this.translator;
    }
    public String getTranslatorFullName(){
        return this.getTranslator().getFirstName() + " " + this.getTranslator().getLastName();
    }
    public String getText() {
        return this.text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getTitle() {
        return this.title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
    public String getDisplayTitle(){
        return getTitle() + " Author: " + this.getAuthor().getFirstName() + " " + this.getAuthor().getLastName();
    }
}

主类:

public class Main {
public static void main(String[] args){
    Book mybook = new Book();
    mybook.setTitle("Fight Club");
    mybook.setText("First rule of Fight Club, you do not talk about Fight Club");
    Book.Author author = mybook.new Author("John","Doe");
    Book.Translator translator = mybook.new Translator("Alan","Rickman");
    System.out.println(mybook.getDisplayTitle());
    System.out.println(mybook.getAuthor().getLastName());
    System.out.println(mybook.getAuthor().getFirstName());
    System.out.println(mybook.getTranslatorFullName());
    System.out.println(mybook.getTranslator().getFirstName());
}
}

它必须通过这些测试,我的问题是什么?

别告诉我让 Translator 实现 IPerson,这是我老师要求扩展的

最佳答案

你可以这样修复它:

public Author(String f, String l, boolean authorCheck){
    firstName = f;
    lastName = l;
    if(authorCheck)
    {
        author = this;
    }
}

public Author(String f, String l){
    firstName = f;
    lastName = l;
    author = this;
}
<小时/>
public Translator(String f, String l) {
    super(f, l, false);
    translator = this;
}

关于java - 两个类制作同一个实例? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34907467/

相关文章:

java - 执行 JPA 查询时获取 NoSuchMethodError : javax. persistence.Table.indexes()

java - JTabbedPane - 动态选项卡控件

c++ - 为什么你可以调用一个复制构造函数传入你正在构造的对象? (C++) (海合会)

C# .net 对象引用未设置为静态类上的对象实例

javascript - 使用javascript替换url中的参数

java - 结构数组总是比数组结构快?

java - 是否可以编写Java客户端来访问Tensorflow Server?

c# - 说明静态成员

C++ 创建类对象

javascript - 我需要反转对象的格式