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

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

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

  1. @Override
  2. protected String sendFile(Product product, Type type) {
  3. return null;
  4. }

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

a0x5cqrl

a0x5cqrl1#

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

  1. abstract class Sender{
  2. protected void send();
  3. }
  4. interface ISendFile{
  5. default String sendFile(Product product, Type type) {
  6. .......
  7. return string;
  8. }
  9. }
  10. class SpecialSender extends Sender{
  11. @Override
  12. protected String send() {
  13. return null;
  14. }
  15. }
  16. class EmployeeSender extends Sender implements ISendFile {
  17. @Override
  18. protected String send() {
  19. ......
  20. }
  21. @Override
  22. String sendFile(Product product, Type type) {
  23. .....
  24. }
  25. }
展开查看全部

相关问题