結(jié)論:子類繼承父類,調(diào)用方法時(shí)先是調(diào)用子類中的方法,如果沒有就調(diào)用父類中的方法,還有一點(diǎn)就是try{ }、catch{ }、finally{ }返回值的問題,一旦try{ }中返回了某一個(gè)值,如果finally有返回值,finally中的返回值會(huì)覆蓋try的返回值,如果finally沒有返回值,就是try中的返回值。
原題接:https://www.nowcoder.com/questionTerminal/af8cf04602e045958d13d16d20a1bf02
詳細(xì)解答:https://blog.csdn.net/zhumintao/article/details/53818972
public class Test {
? ? public static void main(String [] args){
? ? ? ? System.out.println(new B().getValue());
? ? }
? ? static class A{
? ? ? ? protected int value;
? ? ? ? public A(int v) {
? ? ? ? ? ? setValue(v);
? ? ? ? }
? ? ? ? public void setValue(int value){
? ? ? ? ? ? this.value = value;
? ? ? ? }
? ? ? ? public int getValue(){
? ? ? ? ? ? try{
? ? ? ? ? ? ? ? value++;
? ? ? ? ? ? ? ? return value;
? ? ? ? ? ? } catch(Exception e){
? ? ? ? ? ? ? ? System.out.println(e.toString());
? ? ? ? ? ? } finally {
? ? ? ? ? ? ? ? this.setValue(value);
? ? ? ? ? ? ? ? System.out.println(value);
? ? ? ? ? ? }
? ? ? ? ? ? return value;
? ? ? ? }
? ? }
? ? static class B extends A{
? ? ? ? public B() {
? ? ? ? ? ? super(5);
? ? ? ? ? ? setValue(getValue() - 3);
? ? ? ? }
? ? ? ? public void setValue(int value){
? ? ? ? ? ? super.setValue(2 * value);
? ? ? ? }
? ? }
}