首先看一个代码

父类代码:

 public class Parent {

     {
System.out.println("Parent非静态代码块");
} static {
System.out.println("Parent静态代码块");
} public String name; public Parent() {
this.name = "小明";
// play1();
play();
} // public void play1() {
// System.out.println(name +"在Parent类中玩游戏!!!");
// } public void play() {
System.out.println(name +"在Parent类中玩游戏!!!");
}
}

子类代码:

 public class Sub extends Parent{

     {
System.out.println("Sub非静态代码块");
} static {
System.out.println("Sub静态代码块");
} public String name; public Sub(String name) {
super();
this.name = name;
} public void play() {
System.out.println(name +"在Sub类中玩游戏!!!");
}
}

main方法代码:

 public class Main {

     public static void main(String[] args) {

 //        System.out.println("========主方法========");

         Sub sub = new Sub("小强");

         sub.play();

     }
 

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

其中有几个点需要注意:

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

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

总结:
  继承结构在内存中运行步骤:
  父类静态变量以及静态程序块 --- 子类的静态变量以及静态程序块 ---(子类主方法)--- 父类非静态代码块 --- 父类初始化---父类中构造方法 --- 子类中非静态代码块 --- 子类初始化---子类中构造方法 --- 对象调用的方法

Java——继承的运行顺序的更多相关文章

  1. Java类的基本运行顺序

    不看不知道,一看还真吓了一跳!Java类的基本运行顺序你真的知道吗?如果你有疑惑,那就看下面这篇文章吧.   原文出自:[url]http://column.ibeifeng.com/chenchen ...

  2. Java类的基本运行顺序是怎样

    我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo{ private String name; private int age; public Demo(){ ...

  3. Java知多少(23)类的基本运行顺序

    我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo{ private String name; private int age; public Demo(){ ...

  4. [Java学习] Java类的基本运行顺序

    我们以下面的类来说明一个基本的 Java 类的运行顺序: 1. public class Demo{ 2. private String name; 3. private int age; 4. 5. ...

  5. 《Java基础知识》Java类的基本运行顺序

    我们以下面的类来说明一个基本的 Java 类的运行顺序: public class Demo { private String name; private int age; public Demo() ...

  6. java继承 初始化顺序

    java继承 初始化顺序 标签: 初始化顺序 2013-08-01 10:13 879人阅读 评论(0) 收藏 举报  分类: java(8)  版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  7. java 继承 初始化顺序

    面向对象三大特性: 封装,继承,多态 java 继承初始化顺序 先初始化父类对象, 在父类对象中先初始化父类属性,再初始化父类的构造方法,然后初始化子类对象,初始化子类对象的属性,初始化子类的构造方法 ...

  8. Java类(继承)初始化顺序

    /** * Created by xfyou on 2016/11/2. * Java继承的初始化 */ public class Beetle extends Insect { int k = pr ...

  9. Java 继承中构造方法的执行顺序问题

    在Java中,如果一个类没有任何显式创建的构造器则该类默认会有一个无参构造器:如果显式创建了有参构造器则该类就不再有默认无参构造器. 在Java继承中,构造器并不能被继承,而是被显示或隐式调用. 1. ...

随机推荐

  1. 查看 linux 目录大小

    查看 linux 目录大小 du -sm * | sort -n # 以m显示并按小到大排序 ​

  2. linux命令行安装teamviewer

    teamviewer最新版本为14,但是Ubuntu14.04不支持,安装13版本即可. sudo dpkg -i teamviewer_13.2.26559_amd64.deb若报错,即缺少依赖,运 ...

  3. Lintcode155-Minimum Depth of Binary Tree-Easy

    155. Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum depth is ...

  4. js原生实现抽奖活动(方形非圆盘)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. Thinkphp5.0 多图上传名称重复BUG

  6. restful接口定义的几种方式

    GET (SELECT): Retrieve a specific Resource from the Server, or a listing of Resources.        #从服务器检 ...

  7. what is API

    JavaScript — A high-level scripting language built into browsers that allows you to implement functi ...

  8. URL组成部分详解

    URL组成部分详解 URL是Uniform Resource Locator的简写,统一资源定位符. 一个URL是由以下几部分组成的: scheme://host:port/path/?query-s ...

  9. JavaScript中函数立即调用的写法

     第一:在含数前面加一元运算符: //方法1 +function (i) { console.log('+'); }(1); //方法2 -function (i) { console.log('-' ...

  10. ElasticSearch踩坑记录

    一.分词错误 [2018-02-06 14:28:30:098] --- [INFO] --- [CjhArticleSimilarityTask.java:66] --- [[SimilarityC ...