with regards to Class extending Object, should this error be possible? error: clone() has protected access in Object Class.clone(); ^ Of course this sort of nit-picking is absolutely not constructive. I'm just saying that if you're teaching the "Object Oriented" programming paradigm, there are better choices than Java. Java is a really difficult language for the beginner. How many professional Java programmers can work without an IDE? Compare that to the same metric for any scripting language. -Justin. P.S. error: clone() has protected access in Object System.out.println(Class.clone().toString()); ^ On Thu, Feb 21, 2013 at 11:45 AM, Ethan Gruber <[log in to unmask]> wrote: > 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 > > > > > > > > > >