1 首先说说这个在创建一个对象时java内部的执行顺序,前提是有静态代码块,代码块,构造方法。执行顺序是 静态代码块,然后是代码块,最后是构造方法。
如果有继承,B继承A 在创建B对象时 顺序, A静态代码块,B静态代码块,A代码块,A构造器,B代码块,B构造器
2 关于多态在变量之间的性质。
B类继承了A类 ,在A类中有int a=1; static int b=2; 这个时候 A b=new B(); 输出b.a 和b.b 都是A类中的值,因为多态体现到方法上面,对于属性是不存在多态的。属性看的是形参的类型,形参什么类型,属性就是这个类型所包含的属性。
3 关于final修饰的变量
首先,用final修饰的是第一次就要赋值的变量,并且以后都不允许修改。 一般来说final修饰的都是基本类型,这个基本类型存储在栈区,假如final修饰的是一个list集合,那么其实这个集合是可以做增加,删除元素操作的,因为java中都是值传递,final修饰的基本类型不能改变是因为在栈区这个基本类型已经有值了不能修改,但是final修饰集合,所修饰的其实是指向堆区的引用,这个引用不会修改,list修改的是堆中的值