This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Consider a class Foo that extends Bar and implements Baz. As it turns out Baz also implements Baz. You can only have one copy of each object in Baz. If you could write to those variables they would be useless: you could set the value but a super-class could wipe it out anytime on any method.
The shortest possible answer as to why they are static and final is "Because. " They are, because that's how Java was designed.
Now, what's the rationale? The best rationale is simply that the creators of Java did not think of instance variables as part of the contract of any class. The only kind of public instance variables that you should ever use are the "dumb data" kind, as in java.awt.Point. Otherwise, the only sort of variables belonging to another class you should ever be interested in are public final static ones.