面试题之父类和子类执行顺序部分
2016-08-31 17:56
204 查看
class parent { private static String name=method2(); public parent() { System.out.println("构造1"); } static{ System.out.println("static 1"); } public void method1() { System.out.println("i am parent method!"); } public static String method2() { System.out.println("i am parent static method!"); return "parent"; } } class child extends parent { static{ System.out.println("static 2"); } private static String name=method2(); public child() { System.out.println("构造2"); } public void method1() { System.out.println("i am child method!"); } public static String method2() { System.out.println("i am child static method!"); return "child"; } } public class TestParentAndChild { public static void main(String[] args) { parent parent=new parent(); child child=new child(); child.method1(); } }
运行结果:
i am parent static method!
static 1
构造1
static 2
i am child static method!
构造1
构造2
i am child method!
parent parent=new parent() 首先加载父类,静态方法按照顺序加载,所以是 i am parent static method! static 1 最后才是构造函数
child child=new child();类只加载一次,所以这个时候直接去加载子类就可以了 static 2 i am child static method!
此时这个构造还会执行一次父类构造函数,然后才是子类构造函数
child.method1();最后调用这个子类对象的方法
相关文章推荐
- java中父类与子类构造函数的执行顺序
- 类执行顺序(子类,基类,成员)
- 金山面试题--四个线程a,b,c,d. 线程a,b对变量i加一. 线程c,d对变量i减去一.四个线程顺序执行, 每个线程每次只执行一次.i的初始值为0, 打印结果0 1 2 1 0 1 2 1 0 1
- for循环各部分的执行顺序
- Java子类与父类的初始化,父类子类內部程序的执行顺序
- static,构造函数,子类,父类执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 子类继承父类时实例化子类的执行顺序
- 父类子类的静态初始化块,初始化块,构造器执行顺序
- Java中的继承与静态static等的执行先后顺序的面试题
- 一个查询语句各个部分的执行顺序
- 一道关于try,finally执行顺序的面试题
- 一个查询语句各个部分的执行顺序
- [C++]父类与子类的静态成员变量、实例成员变量、构造函数的执行顺序
- java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序
- 子类继承父类时实例化子类的执行顺序
- SQL查询语句各部分的执行顺序
- 父类、子类执行顺序
- Java中的继承与静态static等的执行先后顺序的面试题
- Java 中子类继承父类,执行顺序