Java覆盖函数中的一个参数是恒定的子类。

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

我有一个基于键值对读写数据的服务。这个服务是通用的。

我想实现一个类似的类,它扩展了我所描述的类。但在基类中,键是常数.

问题是,如果我试图覆盖读写函数,它们都会有关键参数,尽管它是const。

在这种情况下,我如何实现和覆盖?是可以实现还是只能不继承?

我的 BaseService.java

class BaseService {
    private HashMap<String, String> storage = new HashMap<String, String>();

    void write(String key, String value) {
        storage.put(key, value);
    }

    String read(String key) {
        return storage.get(key);
    }
}

ChildService.java

class ChildService extends BaseService {
    static final String KEY = 'const-key';
    @override
    void write(String value) {
        storage.put(KEY, value);
    }

    @override
    String read() {
        return storage.get(KEY);
    }
}

由于现在的签名不同,所以不可能这样覆盖。

java oop inheritance
1个回答
1
投票

试试这样的方法。

public abstract class BaseService {
    HashMap<String, String> storage = new HashMap<String, String>();

    abstract String getKey();

    void write(String key, String value) {
        storage.put(key, value);
    }

    String read(String key) {
        return storage.get(key);
    }

    String read() {
        return storage.get(getKey());
    }

    void write(String value) {
        storage.put(getKey(), value);
    }

}

public class ChildService extends BaseService {

    static final String KEY = "const-key";

    @Override
    String getKey() {
        return KEY;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.