java—可以从重写的抽象方法返回null吗

cfh9epnr  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(411)

我有一节课 SpecialSender 女巫伸出 abstract class Sender . 抽象类中有方法 sendFile 但我的发送者只发送普通字符串,所以我不想使用 sendFile . 这是一个好的做法:

@Override
    protected String sendFile(Product product, Type type) {
        return null;
    }

或者应该使用一些例外,或者有不同的方法来更好地完成它,例如我不应该扩展 Sender 完全?

a0x5cqrl

a0x5cqrl1#

我认为你最好应用界面分离原则。
也就是说 Sender 具有抽象方法的类 sendFile . 你可以有一个像 ISendFile 使用抽象/默认方法 sendFile . 这样发送方所需的子类就可以实现 ISendFile .
例子:

abstract class Sender{

  protected void send();

}

interface ISendFile{

default String sendFile(Product product, Type type) {
        .......
        return string;
    }
}

class SpecialSender extends Sender{

@Override
    protected String send() {
        return null;
    }
}

class EmployeeSender extends Sender implements ISendFile {

@Override
    protected String send() {
        ......
    }

 @Override
    String sendFile(Product product, Type type) {
        .....
    }
}

相关问题