有没有一种方法可以使用派生的类对象(在Java中)轻松创建超类的对象?

问题描述 投票:1回答:1

因此,假设有一个类A(父类),B扩展了A(B是子类)。您有B的对象,并且想要从中获得A的等效对象(即,使用A的属性创建A的对象,该属性在B中可用。

您可以通过输入参数来创建一个基本上创建A对象的函数。我不想这样做的原因是,每次更改A时,我都必须进入并更改此函数,以使所有属性都不会丢失。

Class A{
    public String Property1;
}

Class B extends A{
    public String Property2;

    public A returnAObject(){
        // returns object of A
    }
}

B object = new B("property1","property2");
A requiredObject = object.returnAObject();
java object inheritance
1个回答
0
投票

您拥有B的对象,并且想要从中获得A的等效对象(即,使用B中可用的A的属性创建A的对象。

没有现成的解决方案可实现此目标。

我不想这样做的原因是,每次更改A时,我必须进入并更改此功能,以便没有任何属性丢失。

实现此目标的一种方法是在类A中引入一个子类可以继承的方法(例如,说createFromA)。这样,如果将新属性添加到A,则仅A会更改,而子类不会更改。毕竟,您感兴趣的是A的属性,因此A是唯一应更改的类。

class A {
    private String property1;
    private String property2;

    public A(String property1, String propert2) {
        super();
        this.property1 = property1;
        this.property2 = propert2;
    }

    public final A createfromA(A a) {
        A newA = new A(a.getProperty1(),a.getProperty2());
        return newA;
    }

    //getters and setters follow..
}

class B extends A {

    private String property3;

    public B(String property1, String property2,String property3) {
        super(property1, property2);
        this.property3 = property3;
    }

    //getters and setters follow..
}

然后,根据A的属性创建新实例将很简单:

A a = new B("1","2","3");
A newA = a.createfromA(a);
© www.soinside.com 2019 - 2024. All rights reserved.