I did misspeak a bit. You can override static methods in Java. My major
issue is that there is no "getClass()" within a static method, so when the
static method is being run in the context of the inheriting class it is
unaware of its own run context.
For example: I want the output to be "Hi from bar", but it's "Hi from foo":
class Foo {
public static void sayHello() {
hi();
}
public static void hi() {
System.out.println("Hi from foo");
}
}
class Bar extends Foo {
public static void hi() {
System.out.println("Hi from bar");
}
}
class Test {
public static void main(String [ ] args) {
Bar.sayHello();
}
}
-Justin
On Thu, Feb 21, 2013 at 11:18 AM, Eric Hellman <[log in to unmask]> wrote:
> OK, pedant, tell us why you think methods that can be over-ridden are
> static.
> Also, tell us why you think classes in Java are not instances of
> java.lang.Class
>
>
> On Feb 18, 2013, at 1:39 PM, Justin Coyne <[log in to unmask]>
> wrote:
>
> > To be pedantic, Ruby and JavaScript are more Object Oriented than Java
> > because they don't have primitives and (in Ruby's case) because classes
> are
> > themselves objects. Unlike Java, both Python and Ruby can properly
> > override of static methods on sub-classes. The Java language made many
> > compromises as it was designed as a bridge to Object Oriented programming
> > for programmers who were used to writing C and C++.
> >
> > -Justin
> >
>
|