java中子类继承父类程序执行顺序问题
2017-11-15 21:46
417 查看
public class FatherTest { private String name; public FatherTest(){ System.out.println("--父类的无参构造函数--"); } public FatherTest(String name){ this.name=name; System.out.println("--父类的有参构造函数--"+this.name); } static{ System.out.println("--父类的静态代码块--"); } { System.out.println("--父类的非静态代码块--"); } public void speak(){ System.out.println("--父类的方法--"); } //加入一个main程序后 public static void main(String[] args) { System.out.println("--父类主程序--"); FatherTest father=new FatherTest("父亲的名字"); father.speak(); } }
结果:
、
可以很明显的看出来执行顺序:静态代码块—主程序—非静态代码块—构造函数—一般方法。
public class SonTest extends FatherTest { private String name; static{ System.out.println("--子类的静态代码块--"); } { System.out.println("--子类的非静态代码块--"); } SonTest(){ System.out.println("--子类的无参构造函数--"); } SonTest(String name){ this.name=name; System.out.println("--子类的有参构造函数--"+this.name); } @Override public void speak(){ System.out.println("--子类Override了父类的方法--"); } //然后再加入一个main函数 public static void main(String[] args) { System.out.println("--子类主程序--"); FatherTest father=new FatherTest("父亲的名字"); father.speak(); SonTest son=new SonTest("儿子的名字"); son.speak(); } }
结果:
加入了子类以后,执行顺序有了新的变化,我们可以总结一下。首先第一部分执行的是父类的静态代码块—子类的静态代码块—主程序。这一部分都是执行一次,与建立多少对象没有关系。第二部分new了一个父类对象,并调用了方法。执行了它的非静态代码块—构造函数—一般方法。第三部分new了一个子类的对象,并调用了方法。执行顺序为父类的非静态代码块—父类的无参构造函数,然后是子类的非静态代码块—子类构造函数—子类的方法。
相关文章推荐
- java中子类继承父类程序执行顺序问题
- java中子类继承父类程序执行顺序问题
- java中子类继承父类程序执行顺序问题
- java中子类继承父类程序各成员的执行 顺序
- java中子类继承父类程序执行顺序
- java中子类继承父类程序执行顺序
- Java子类继承父类,构造方法的执行顺序问题
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- Java子类与父类的初始化,父类子类內部程序的执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- Java继承:子类和父类创建对象的顺序问题。
- Java 中子类继承父类,执行顺序
- java中子类继承父类,程序运行顺序的深入分析
- Java子类与父类的初始化,父类子类內部程序的执行顺序
- java父类子类中静态块非静态块构造方法的执行顺序和继承
- java中子类继承父类,程序运行顺序
- java中子类继承父类,程序运行顺序
- Java子类继承父类,静态代码块、普通代码块、构造代码块的执行顺序
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- Java对象的构造过程---子类继承父类时(非)静态块及构造函数等的执行顺序