DEV Community

Discussion on: Can you implement abstract classes, like you can interfaces?

Collapse
 
hugueschabot profile image
Hugues Chabot

In a subclass, you can override the return type of a method: stackoverflow.com/a/14694885

Collapse
 
baenencalin profile image
Calin Baenen

Yes, but it must be a subclass of the original return type, and I seen this.
But, I don't think void has any subclasses, and I don't think you can subclass void (even though void IS a class (void.class proves)).

Collapse
 
hugueschabot profile image
Hugues Chabot

Exactly, nothing extends void. I am not sure of what you want to do but could java.util.function.Supplier be a better suited interface than Runnable?

Thread Thread
 
baenencalin profile image
Calin Baenen

No, because Runnable implies it's a piece of code that's run (one that's not seeking a result), much to the likes of Thread (which implements Runnable).
If Runnable was useless, it wouldn't have been made.

I want my class to be considered part of Runnable because it matches the format with similar (if not (essentially) the same) methods, and because a lot of things use Runnable in place of functions in Java.

Thread Thread
 
alainvanhout profile image
Alain Van Hout

Note that a runnable doesn't 'return' void. What the 'void' return type means is that it doesn't return something.

Things like Supplier, Consumer and Function are used as much as Runnable.