java - 为子类设置父类(super class)属性

标签 java oop inheritance

所以我在让我的属性在父类(super class)类型场景中正确设置时遇到了一些问题。

我有 2 个类,B 类是 A 类的特殊版本,比方说...

public class A {
    private String name;
    private int id;
    ...
} 

public class B extends A {
    private Date time;
    private int status;
    ...
}

现在我要做的是使用一种方法,该方法用于从结果集中设置 A 中的属性,而不是将它们设置在 B 的实例中。

public A setProperties(ResultSet rs) {
    A a = new A();
    a.setName(rs.getString(...));
    ...
    return a;
}

我曾尝试从中获取返回值并将其转换为 B,但当然并非所有 A 都是 B... 所以这是行不通的。我还尝试向 setProperties 方法添加另一个参数,以便它接受一个 A 并返回一个 A,这样我就可以使用多态性来取回我的 B,但随后我的所有值都被取消了.

我在这里不知所措,非常感谢任何建议。

最佳答案

在父类(super class)中声明方法。子类将覆盖此方法,然后调用 super.foo(ResultSet rs),其中 foo(...) 是被覆盖的方法。其中,您可以解析 ResultSet 并设置对象的字段。

例子-

class Foo{
    void setProperties(final ResultSet rs){
        // do stuff
    }
}

final class Bar extends Foo{
    @Override
    final void setProperties(final ResultSet rs){
        // do stuff
        super.setProperties(rs);
    }
}

有关详细信息,请参阅 Using the Keyword super .

关于java - 为子类设置父类(super class)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657134/

相关文章:

java - 删除 WebView 中的横幅?

java - 如何从监视器线程中断另一个线程

java - 什么对创建对象的时间影响最大​​?

java - 为什么在 Java 中继承是强耦合的,而组合是松散耦合的?

c# - 如何在 C# 中隐藏基类属性?

c++ - 在未完成的类层次结构中的 "final"类上使用虚拟继承

java - 如何从外部更新JavaFX场景?

java - IntelliJ 中的 Spring 项目中的 gradle 存在 java 版本控制问题

java - 数组真的是对象吗?

javascript - 重写 javascript 对象属性上的函数