This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
You can't use any instance variables until the superclass constructor has been called. If you call a constructor of your own class in your constructor (like you're doing) the superclass constructor does not get implicitly called in that constructor. In your case you're passing an instance variable in that call which is illegal.
An explicit constructor invocation statement in a constructor body may not refer to any instance variables or instance methods declared in this class or any superclass, or use this or super in any expression; otherwise, a compile-time error occurs.
[ January 07, 2005: Message edited by: Richard Vagner ]
when you mak a explicitly call to the same class constructor with this() or to the super class with super() inside constructor you are not supposed to use instance method, instance fields, "this" keyword and "super" keyword.
if you look at the above code f1 is correct because it is staic. you ca refer to static fields and static methods inside this() and super()