Here's a little explaination that might help, taken loosly (I can't spell this
word) from Kathy and Bert's
SCJP book.
When your code compiles, the compile looks at the reference type with is Bas (Classes should start with a capital letter) and Bas has an f1 method, so it passes the compiler. But at runtime the JVM uses the actual instance type, which is Der, and calls the f1 method on Der.
In that case you cannot call the base classes f1 method. As has been stated.
Now try that in an array of Bas classes like
Bas[] bases = {new Bas(), new Der()};
and loop through them calling the f1 method.
Mark