zoukankan      html  css  js  c++  java
  • 类继承和初始化类的执行顺序

    初始化类的执行顺序:子类初始化-》-》子类构造方法-》父类-》构造方法-》属性-》构造方法中内容-》构造方法下面的内容-》子类属性-》子类构造方法中内容

    在Java编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全。在前面的模块中,看到了当一个特定对象被创建时发生了什么。由于继承性,对象被完成,而且下述行为按顺序发生:

    (1)存储空间被分配并初始化到0值

    (2)进行显式初始化

    (3)调用构造方法

    (4)层次中的每个类都会发生最后两个步骤,是从最上层开始。

    Java技术安全模式要求在子类执行任何东西之前,描述父类的一个对象的各个方面都必须初始化。因此,Java编程语言总是在执行子构造方法前调用父类构造方法的版本。 有继承的类在运行的时候,一定要记得:初始化子类必先初始化父类,这是Java程序的一个基本运行过程。比如:

    第1行public class Test extends Parent{

    第2行 private String name = "Java私塾";

    第3行 private int age = 2;

    第4行 public Test(){

    第5行 age = 1000;//期望能到1000年,呵呵

    第6行 }

    第7行 public static void main(String[] args) { 

    第8行 Test t = new Test();

    第9行 System.out.println(t.name+"的年龄是"+t.age+"年");

    第10行 }

    第11行}

    第12行class Parent{

    第13行 private int num = 1;

    第14行 public Parent(){

    第15行 System.out.println("现在初始化父类");

    第16行 }

    第17行 public void test(){

    第18行 System.out.println("这是父类的test方法");

    第19行 }

    第20行}

    上述类的基本运行顺序是: (1):先运行到第7行,这是程序的入口 (2):然后运行到第8行,这里要new一个Test,就要调用Test的构造方法 (3):就运行到第4行,注意:初始化子类必先初始化父类 (4):要先初始化父类,所以运行到第14行 (5):然后是第13行,初始化一个类,必须先初始化它的属性 (6):然后是第15行 (7):然后是第16行,表示父类初始化完成 (8):然后是回到子类,开始初始化属性,因此运行到第2行,然后是第3行 (9):子类属性初始化完过后,才回到子类的构造方法,执行里面的代码,也就是第5行 (10):然后是第6行,表示new一个Test实例完成 (11):然后回到main方法中执行第9行 (12):然后是第10行 运行结果是: 现在初始化父类 Java私塾的年龄是1000年

  • 相关阅读:
    fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
    cvWaitKey 如果 cvNamedWindow就不会起作用
    Java 并发基础
    简化Getter 与 Setter 的插件 Lombok
    20、状态模式
    mybatis-generator 覆盖新增XML
    Jvm 虚拟机
    18、备忘录设计模式
    16、 观察者设计模式
    08、仲载者 -中间者模式
  • 原文地址:https://www.cnblogs.com/ruiati/p/3302978.html
Copyright © 2011-2022 走看看