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 > > >