当前位置: 首页 > 知识库问答 >
问题:

Java类和子类

仲涵亮
2023-03-14

我现在正在学习Java类。

我有班主任。从Person我有两个子类,父亲和母亲。一个父亲可以有三个孩子(孩子1、孩子2、孩子3)。现在我想与孩子的父亲共同接触。我怎么能那样做?

我当前的代码:

班级人物

public class Person {
    String name;
    int age;
    String addresse;

    public Person (){
    }

    public Person(String name, int age, String addresse) {
        this.name = name;
        this.age = age;
        this.addresse = addresse;
    }
}

班级父亲

public class Father extends Person {
  
    Person child1;
    Person child2;
    Person child3;    

    public Father() {
    }

    public Father(String name, int age, String addresse) {
        this.name = name;
        this.age = age;
        this.addresse = addresse;
    }

    public void setName(Name name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
}

我的main。java
我创建一个父亲和一个人,并将其分配给子1。

public class PersonTest {

    public static void main(String[] args) {
        Father f = new Father();
        f.setName("Joe");

        Person p1 = new Person();
        p1.setName("Kai")

        f.child1 = p1;
    }
}

现在,我想通过p1得到孩子1的父亲的名字。我怎么能那样做?

共有1个答案

廖夜洛
2023-03-14

您可以在孩子和父亲之间创建双向依赖关系。如果这是一个好的设计决策-不是我答案的一部分。

public class Person {
    String name;
    int age;
    String addresse;
    Father father;

    public Person (){
    }

    public Person(String name, int age, String addresse) {
        this.name = name;
        this.age = age;
        this.addresse = addresse;
    }

    public void setFather(Father father) { 
        this.father = father;
    }
}

创建一个进行双向链接的setter:

public class Father extends Person {
  
    Person child1;
    Person child2;
    Person child3;    

    public Father() {
    }

    public Father(String name, int age, String addresse) {
        this.name = name;
        this.age = age;
        this.addresse = addresse;
    }

    public void setName(Name name) {
        this.name = name;
    }
    public String getName() {
        return this.name;
    }
    public void setChild1(Person child1) {
        this.child1 = child1;
        this.child1.setFather(this);
    }
}

这样称呼它:

public class PersonTest {

    public static void main(String[] args) {
        Father f = new Father();
        f.setName("Joe");

        Person p1 = new Person();
        p1.setName("Kai")

        f.setChild1(p1);
 
        // p1.father
    }
}
 类似资料:
  • 问题内容: 给这篇Dobbs博士文章,尤其是Builder模式,我们如何处理将Builder子类化的情况?以该示例的简化版本为例,在该示例中我们想使用子类来添加GMO标签,一个简单的实现将是: 子类: 现在,我们可以编写如下代码: 但是,如果我们弄错了订单,那么一切都会失败: 问题当然是NutritionFacts.Builder返回a NutritionFacts.Builder,而不是a GM

  • 我对Java/Android中的继承/接口有点困惑,不确定我是否走上了正确的道路。基本上,我在Android系统中使用Parcelable,由于方法未定义,所以会出现错误。 我有一个动物超类和几个子类(狗、猫等)。在第一个活动中,您选择一只动物,然后它将其打包并传递给第二个活动: 问题是“updateImage”只存在于子类中,因此它不会在这里编译。我不希望这个方法出现在超类中,因为输出根据动物的

  • 我的类别表设计如下 我有三个级别的类别 < li >父项 < li >孩子 < li >子系 如何以下列方式显示它们? (SELECT*From类别):我得到以下数组,如下所示

  • 为什么我们不能在子类B中声明一个实例方法,它与父类a中的静态方法共享相同的签名? 在上面的代码中,由于A没有该名称的实例方法,并且由于Java允许对象访问静态方法,所以指向B的类型为A的对象A可以调用它中存在的静态方法(类A)。但是编译器抛出一个错误“实例方法不能重写静态方法”为什么? 注意:我可以理解,如果一个类不允许两个方法使用相同的方法名,即使其中一个是实例,另一个是静态的。但是我不明白为什

  • 问题内容: 我一直在尝试JAXB教程,并设法使代码能够从Java对象生成XML文件,然后能够使用XML生成Java对象。目前,它读取同一类的多个实例以创建一个类似于以下内容的XML文件 我希望能够使用JAXB技术来处理子类。例如:说我有一个Car,Van和Bicycle对象,它们是Vehicle的子类。我是否可以操纵我的JAXB类来编写一个会产生类似结果的XML文件?我在下面提供了我正在使用的代码