zoukankan      html  css  js  c++  java
  • Java——继承的运行顺序

    首先看一个代码

    父类代码:

     1 public class Parent {
     2     
     3     {
     4         System.out.println("Parent非静态代码块");                
     5     }
     6     
     7     static {
     8         System.out.println("Parent静态代码块");
     9     }
    10 
    11     public String name;
    12 
    13     
    14     public Parent() {
    15         this.name = "小明";
    16 //        play1();
    17         play();
    18     }
    19     
    20 //    public void play1() {
    21 //        System.out.println(name +"在Parent类中玩游戏!!!");
    22 //    }
    23     
    24     public void play() {
    25         System.out.println(name +"在Parent类中玩游戏!!!");
    26     }
    27 }

    子类代码:

     1 public class Sub extends Parent{
     2     
     3     {
     4         System.out.println("Sub非静态代码块");                
     5     }
     6     
     7     static {
     8         System.out.println("Sub静态代码块");
     9     }
    10 
    11     public String name;
    12     
    13     public Sub(String name) {
    14         super();
    15         this.name = name;
    16     }
    17     
    18     public void play() {
    19         System.out.println(name +"在Sub类中玩游戏!!!");
    20     }
    21 }

    main方法代码:

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4         
     5 //        System.out.println("========主方法========");
     6         
     7         Sub sub = new Sub("小强");
     8                         
     9         sub.play();
    10         
    11         
    12     }
    13 

    运行的结果是:Parent静态代码块
           Sub静态代码块
           Parent非静态代码块
           null在Sub类中玩游戏!!!
           Sub非静态代码块
           小强在Sub类中玩游戏!!!

    其中有几个点需要注意:

    (1)输出null的原因是当时name还没有进行初始化(sub.name)

    (2)而play()运行出来sub的原因是没有parent对象

    总结:
      继承结构在内存中运行步骤:
      父类静态变量以及静态程序块 --- 子类的静态变量以及静态程序块 ---(子类主方法)--- 父类非静态代码块 --- 父类初始化---父类中构造方法 --- 子类中非静态代码块 --- 子类初始化---子类中构造方法 --- 对象调用的方法
  • 相关阅读:
    Oracle 查看一个表对应的主键和外键的约束关系,查看的语句:
    openssl 生成p12文件错误
    XP SP3远程桌面无法连接Windows Server 2008/Vista
    windows 7 正确禁用 IPv6
    用正则表达式替换换行符
    Eclipse插件开发之定制向导(各方法说明)
    oepnvpn 配置自启动
    TNS12547: TNS:lost contact 错误解决
    redhat 5.5 U盘安装
    Hibernat 使用Criteria查询多对多关系(SET集合)条件
  • 原文地址:https://www.cnblogs.com/ne709/p/9475958.html
Copyright © 2011-2022 走看看