Установка свойств суперкласса для подкласса - PullRequest
3 голосов
/ 28 декабря 2011

Так что у меня возникла небольшая проблема с правильной настройкой моих свойств в сценарии типа суперкласса.

У меня есть 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, но затем все мои значения были обнулены.

Я в растерянности, любые рекомендации очень ценятся.

1 Ответ

6 голосов
/ 28 декабря 2011

Объявите метод в суперклассе. Подкласс переопределит этот метод и затем вызовет 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);
    }
}

Для получения дополнительной информации см. Использование ключевого слова super .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...