Re: inheriting a main method
On Sep 14, 3:48 pm, Leif Roar Moldskred
<le...@huldreheim.homelinux.org> wrote:
Ow. Don't do that. For one thing, I don't think there _is_ any way
to retrieve the name of the class mentioned on the command line
in this case. More importantly, it's bad design.
I'd recommend you make an inherited business method, then write
explicit main methods for all the classes that will use it (There
can't be _that_ many of them, and it make it a lot easier to
understand what's happening.)
Something like this:
public abstract class BaseClass {
protected void doStuff( String[] args ) {
// Do whatever you're supposed to do
}
}
public class SubClass extends BaseClass {
public static void main( String[] args ) {
BaseClass myFoo = new SubClass( );
myFoo.doStuff( args );
}
}
If you have common initialization that needs to be done, use an
inherited initialization method as well:
public static void main( String[] args ) {
BaseClass myFoo = new SubClass( );
myFoo.initialize( args );
myFoo.doStuff( );
}
Unfortunately, I need to do this. The parent class is going to be
subclassed by young children, first experimental subject being a nine
year old. I have to kick out the main class, but still have it
runnable. Fundamentally, you can't teach advanced programming
languages with sophisticated structures to young children, or at least
most young children. I'm sure there are some prodigies out there.
Previously when I've done this before, I've created bespoke
programming languages with bespoke IDEs. But the whole point of what
I'm trying now is to see whether Object Orientated Programming can be
leveraged to produce a LOGO style language (and execution environment)
while the code being written is actually proper Java, just extending a
prewritten class.
The alternative is to modify the IDE that will be used to supply the
name of the class as the first argument to the running program. I
don't particularly want to modify the IDE, as that means that the IDE
would become a necessary part of the environment, but it is currently
the best solution, and I don't appear to be finding anything better
than that.
Thanks for all for the comments and ideas.