练习题

运行以下程序,结果是( )

 class A{
        public int i = method();
        public static int j = method2();
        public int k = 0;
        public A(){
            System.out.println(1);
        }
        public int method(){
            System.out.println(2);
            return 2;
        }
        public static int method2(){
            System.out.println(3);
            return 3;
        }
    }
    public class B extends A{
        public int m = method3();
        public static int n = method4();
        public int t = 0;
        public B(){
            System.out.println(4);
        }
        public int method3(){
            System.out.println(5);
            return 5;
        }
        public static int method4(){
            System.out.println(6);
            return 6;
        }
        public static void main(String[] args){
            System.out.println(7);
            A a = new B();
        }
    }

A. 7,3,2,1,6,4,5

B. 3,6,7,2,1,5,4

C. 7,3,6,2,1,5,4

D. 3,2,1,7,6,5,4

这个题选择B答案.
解析:通常在运行程序时我们都知道从主函数开始执行,然后看见这个题第一反应就是第一个出来的答案一定是7,所以排除B,C.其实不是这样的
对这道题来说,主函数包含在子类B里面,但是B又是继承自A函数,JVM运行程序,会先进入到父类A中,按照类的初始化顺序 父类静态变量/静态块—>进入子类B中,继续子类静态变量/静态块,然后是主函数,最后再运行 A a = new B();继续初始化

类的初始化过程:

父类静态变量/静态块—>子类静态变量/静态块---->父类实例变量/实例块/构造方法---->子类实例变量/实例块/构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值