Print

Print


Look, I'm sure we can list the many ways different languages fail to meet
our expectations, but is this really a constructive line of conversation?

-1


On Thu, Feb 21, 2013 at 12:40 PM, Justin Coyne
<[log in to unmask]>wrote:

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