IMHO these are basic question that should be moved to the beginner forum.
Two marvellous resources that will speed up your learning, and that are are also free are
The Java Tutorial and
Thinking in Java There go the answers:
Base b = new Derived();
b.method();
The compiler will check that a method with the given name (method) and given parameters (none) was declared in the class which is the declared type of b; that is Base. If no such method exist the compiler will complain whether the existance or not of a similar method in the Derived class. By the way the compiler also looks for in the supertypes of Base.
At execution time the class of the real object pointed by b is examined. That is if the Derived class declared an overriding method, that will be called. This is why we say that the methods are resolved at runtime.
However:
Base b = new Derived();
System.out.println(b.field);
The compiler again will check that a field of the given name (field) will exist either in Base or in one of its supertypes. If not, the compiler will complain and refuse to produce the class file.
At runtime the field that will be accessed is the defined in the declared type of b, regardless any possible declaration in Derived. That is the reason why we say that fields are resolved at compile time.
BTW useful abreviation:
Base b;
Base is the declared type of the variable b
hope helps