Consider:
<code class="language-java">class P { public static String s() { return "Ps"; } public String i() { return "Pi"; } } class Q extends P { public static String s() { return "Qs"; } public String i() { return "Qi"; } } P x = new Q(); System.out.print(x.s() + " " + x.i()); </code></pre> What is printed?
- A
Qs Pi
- Bcheck_circle
Ps Qi
- C
Ps Pi
- D
Qs Qi
Explanation
Static methods are resolved by the COMPILE-TIME type (P), so <code>x.s()</code> returns "Ps". Instance methods use the RUNTIME type (Q), so <code>x.i()</code> returns "Qi".