继承类的容易出错的基础题

结论:子类继承父类,调用方法时先是调用子类中的方法,如果没有就调用父类中的方法,还有一点就是try{ }、catch{ }、finally{ }返回值的问题,一旦try{ }中返回了某一个值,如果finally有返回值,finally中的返回值会覆盖try的返回值,如果finally没有返回值,就是try中的返回值。

原题接:https://www.nowcoder.com/questionTerminal/af8cf04602e045958d13d16d20a1bf02

详细解答: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);

        }

    }

}

你可能感兴趣的:(继承类的容易出错的基础题)