Like, if I had:
abstract class Test {
abstract void test();
}
could I do
class Test2 implements Test {/*...*/}
?
Like, if I had:
abstract class Test {
abstract void test();
}
could I do
class Test2 implements Test {/*...*/}
?
For further actions, you may consider blocking this person and/or reporting abuse
mrityunjay saraf -
Basu -
Hernani Almeida -
Anderson Leite -
Top comments (14)
Almost: you extend abstract classes, and provide the abstract methods, to take your example, you would:
this means you can only extend one abstract class of course, as Java is a single-inheritance language.
Can I subclass (extend) without inheriting any of the methods?
Or can I override the return type of the only given method?
By definition, if you sub-class a type, your sub-class inherits all the base type methods and fields. You can add method overrides with different parameter types or quantities, but you cannot simply change a return type. I would recommend adding a new method with a well-chosen name rather than trying to fudge something in with the same name as an existing method, again taking your example:
Okay. Thanks.
I really wish there was a way to do so (for the "daring").
I have something I wanted to be considered a
java.lang.Runnable
(because it has similar functionality), the only difference is thatrun
returns anObject
, andrun
is a default method (in myfuture
library, this is called aCodeShell
).For a 'Runnable that returns an object' have a look at the Supplier class. For a runnable that takes an object as part of its method call, there's Consumer, and if you want both combined there's Function.
Thanks!
What is Dart? Another JVM language?
An abstract class is a class that you can't instantiate, but another class can "extends" it.
You must extends class and abstract class and you must implements interface.
So you must write :
class Test2 extends Test {/.../}
In a subclass, you can override the return type of a method: stackoverflow.com/a/14694885
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 thoughvoid
IS a class (void.class
proves)).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 thanRunnable
?No, because
Runnable
implies it's a piece of code that's run (one that's not seeking a result), much to the likes ofThread
(which implementsRunnable
).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 useRunnable
in place of functions in Java.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.