类文件:Print.java

package net.mindview.util;
import java.io.*;

public class Print {
  // Print with a newline:
  public static void print(Object obj) {
    System.out.println(obj);
  }

}

类文件:Beetle.java

import static net.mindview.util.Print.*;

class InsectInit {
  private int k = printInit("InsectInit.k initialized");
  private int i = 10;
  protected int j;

  InsectInit() {
    print("i = " + i + ", j = " + j);
    j = 40;
  }

  private static int x3 = printInit("static Insect.x3 initialized");

  static int printInit(String s) {
    print(s);
    return 48;
  }
}

class Insect extends InsectInit {
  private int k = printInit("Insect.k initialized");
  private int i = 9;
  protected int j;

  Insect() {
    print("i = " + i + ", j = " + j);
    j = 39;
  }

  private static int x1 = printInit("static Insect.x1 initialized");

  static int printInit(String s) {
    print(s);
    return 47;
  }
}

public class Beetle extends Insect {
  private int k = printInit("Beetle.k initialized");

  public Beetle() {
    print("k = " + k);
    print("j = " + j);
  }

  private static int x2 = printInit("static Beetle.x2 initialized");

  public static void main(String[] args) {
    print("Beetle constructor");
    Beetle b = new Beetle();
  }
}

/*Output:
static Insect.x3 initialized
static Insect.x1 initialized
static Beetle.x2 initialized
Beetle constructor
InsectInit.k initialized
i = 10, j = 0
Insect.k initialized
i = 9, j = 0
Beetle.k initialized
k = 47
j = 39

*/

从输入中可以看出初始化顺序是:

顶层基类static属性--->第二层基类static属性--->导出类static属性--->main方法--->顶层基类属性--->顶层基类构造方法--->第二层基类属性--->第二层基类构造方法--->子类属性--->子类构造方法

转载于:https://www.cnblogs.com/shengwuzhongzi/p/5667986.html

java继承与初始化相关推荐

  1. java 继承对象 初始化_java中具有继承关系的类及其对象初始化顺序

    先说结论 对于具有继承关系的类,它们的类和对象构造顺序为:父类的类构造器() -> 子类的类构造器() -> 父类成员变量的赋值和实例代码块 -> 父类的构造函数 -> 子类成 ...

  2. java的子类调用构造器的顺序_深入剖析Java继承中的初始化与构造器调用关系

    声明:本文为牛旦教育原创,所有权保留,转载请注明来源. 一个对象有两件事:状态和行为. 类中的实例变量表示其对象的状态. 实例方法表示其对象的行为. 类的每个对象都保持自己的状态. 创建类的对象时,将 ...

  3. Java继承_Hachi君浅聊Java三大特性之 封装 继承 多态

    Hello,大家好~我是你们的Hachi君,一个来自某学院的资深java小白.最近利用暑假的时间,修得满腔java语言学习心得.今天小宇宙终于要爆发了,决定在知乎上来一场根本停不下来的Hachi君个人 ...

  4. Java:继承之super关键字,继承之私有权限,继承之方法重写,继承之object类,继承之简单工厂模式

    一.继承的概念及用法       继承背后的思想就是        基于已存在的类来构建新类         当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求 ...

  5. 「万字图文」史上最姨母级Java继承详解

    原创公众号:「bigsai」 除公众号以外拒绝任意擅自转载 文章收录在bigsai公众号和回车课堂 课程导学 在Java课堂中,所有老师不得不提到面向对象(Object Oriented),而在谈到面 ...

  6. Java继承、重写与重载 笔记

    1. Java继承 继承要符合的关系是:is-a,父类更通用,子类更具体. 1.1 继承的特性 子类拥有父类非private的属性,方法. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展. 子 ...

  7. java类成员初始化_简单了解Java类成员初始化顺序

    这篇文章主要介绍了简单了解Java类成员初始化顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类中包含7中成员: 1.静态变量 static 2 ...

  8. java继承层次结构,在状态模式中实现继承层次结构 - java

    我有一个与此非常相似的设计: 这里的NewOrder,Registered&Granted都有通用方法AddOrderline()和Cancel(),因此将这两种方法重构为父类很容易. 当我要 ...

  9. 通过java理解linux,Java继承的理解

    继承: 1)概念 把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容.这个关系叫继承. 1.1)定义类时,通过"继承&quo ...

最新文章

  1. oracle跨库 导库,Oracle 用dblink 跨库导数据
  2. android webview 加载进度和自定义404错误页面
  3. AOP 代理(AOP Proxy)
  4. P5895-[IOI2013]dreaming梦想【树的直径,结论】
  5. python中try命令_Python 异常处理 Python 基础教程 try..except
  6. C++实现自动发邮件代码,这个是用网易邮箱的。
  7. 带宽与码元的关系_再遇到码元、速率、、带宽【9】
  8. 一把“万能钥匙”就能开所有共享单车,撬走3亿元,开发者已被抓捕...
  9. AlertDialog Unable to add window token null is
  10. null和空 not null
  11. sqlmap 基本使用教程--个人笔记
  12. 为什么这么优秀的女生要找男程序员做老公?
  13. 淘宝双11大数据分析(数据准备篇)
  14. 【推文】人间清醒VS梅花痣俏郎君
  15. 新媒体运营:如何策划出一场完整高效的活动方案?(一) 黎想
  16. Xshell6安装与使用
  17. 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释
  18. 使用overlap-add方法计算两个信号的卷积示例
  19. 苹果企业证书安装包,实现微信等软件的扫码安装
  20. 在Keil 中找不到对应芯片厂家的型号

热门文章

  1. android 支付宝沙箱测试环境,Android支付宝沙箱环境使用教程
  2. 对mysql优化关注_MySQL优化看这篇就对了
  3. python 对输入的单词进行字典排序_Python-对字典进行排序
  4. spring mvc 接收List数组类型参数
  5. 4x4矩阵键盘工作原理及扫描程序_AVR单片机扫描4X4矩阵键盘并数码管显示程序
  6. android app内嵌h5页面,app内嵌h5页面:前端与原生语言的配合
  7. linux下storm集群配置,Twitter Storm 系统集群搭建
  8. java对象赋值_Java 对象不使用时为什么要赋值为 null?
  9. vue-cli4入门
  10. Python安装第三方库太慢?配置好这个速度飞起