`
hbdzhm
  • 浏览: 35117 次
  • 来自: ...
社区版块
存档分类
最新评论

继承与初始化

阅读更多
看Java编程思想总结下自己未懂的吧:

class A {
private int i = 1;
protected int j ;
A (){
System.out.println("i =  " + i + ", j = " + j);
j = 55;
}
private static int a1 = print("static A.a1 is initialized");
static int  print(String s) {
System.out.println(s);
return 11;
}
}

public class B extends A {
private int k = print("B.k is initialized");
public B (){
System.out.println("k = " + k);
System.out.println(" j = " + j);
}
private static int b2 = print("static B.b2 is initialized");
public static void main(String[] args) {
System.out.println("begin new Object");
B b = new B();
}
}

输出顺序如下:
static a1 is initialized
static B.b2 is initialized
begin
i =  1, j = 0
B.k is initialized
k = 11
j = 55

很是不解,为了加深印象,笔记之以备以后复习
当我们运行此程序时,第一件事情肯定是访问B的main方法,于是类加载器开始启动并找出B类被编译的的class文件,在对其加载过程中编译器看到他还有父类(根据extends知道)于是继续进行加载父类,必要的类加载完毕后,才会new对象。
因为成员初始化是先静态(创建对象之前就会被初始化),
后非静态的。不管你是否new对象,都会输出:
static a1 is initialized
static B.b2 is initialized
然后开始创建对象,输出:
i =  1, j = 0
B.k is initialized
k = 11
j = 55

分享到:
评论

相关推荐

    类继承的初始化顺序类,继承的初始化顺序

    为了更好地理解类继承初始化顺序的概念,下面通过一段示例代码来进行详细分析: ```java class Base { public Base() { System.out.println("Base constructor"); } } class Derived extends Base { public ...

    Java类继承初始化顺序

    当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、super关键字以及方法的覆盖。 首先,了解类初始化的顺序至关重要。当创建一个子类实例时,初始化过程遵循以下步骤: 1. ...

    Python代码-多继承的初始化问题的解决.py

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    Python代码-多层继承中的属性初始化问题.py

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    类和对象的初始化过程.zip

    3. **继承与初始化** `Father.java`可能涉及到继承的概念。在Java中,子类会继承父类的所有非私有字段和方法。当创建子类对象时,首先会执行父类的构造函数,然后是子类的构造函数。这确保了父类的状态在子类对象...

    java代码的初始化顺序demo

    `init`文件可能包含了各种构造函数的实现,展示它们如何被调用以及与初始化块交互的方式。 5. **成员变量初始化**: Java允许我们在变量声明时进行初始化。这种初始化发生在构造函数之前,因此在实例初始化块之前...

    java程序初始化顺序

    6. **类初始化与类加载器**: - 类的初始化是由对应的类加载器触发的,当且仅当以下条件之一满足时: - 遇到new关键字实例化对象; - 遇到静态字段(非final)并对其进行访问; - 遇到静态方法的调用; - 使用...

    Python代码-使用super简化格式解决多继承的初始化时参数传递问题.py

    ——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!

    java面试题-类的初始化顺序.doc

    这个顺序表明,无论类之间的继承关系如何,初始化顺序始终是:静态变量和静态初始化块先于非静态成员。在创建对象时,父类的初始化先于子类。这是Java语言规范所规定的,确保在子类访问父类的静态或非静态成员时,...

    java中类的初始化顺序

    3. **静态成员变量与实例成员变量的初始化顺序** ```java public class TestOrder { // 静态成员变量初始化 public static TestA a = new TestA(); // 静态初始化块 static { System.out.println("静态初始...

    类初始化顺序示例讲解

    2. **继承关系中的初始化顺序**:在继承关系中,父类的成员变量与初始化块会在子类的对应部分之前执行。 3. **初始化块与成员变量初始化的顺序**:如果静态成员变量定义与静态初始化块同时存在,则先执行静态成员...

    Java类继承关系中的初始化顺序实例详解

    在本文中,我们将详细介绍Java类继承关系中的初始化顺序,并通过实例形式对比分析Java非继承关系中的初始化与继承关系中的初始化相关原理与操作技巧。 首先,让我们来了解Java类继承关系中的初始化顺序。在Java中,...

    virtio_blk初始化流程

    本文将深入探讨Virtio_blk初始化流程及其在qemu-kvm中的实现机制。 首先,我们要理解在qemu-kvm中创建一个对象所涉及的三个关键组成部分:类型(type)、类(class)和实例(instance)。类型将类与实例关联起来,类定义...

    【Flutter】Dart 面向对象 ( 类定义 类的继承 私有变量 可选参数 默认参数 初始化列表 ).zip

    【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 ) https://hanshuliang.blog.csdn.net/article/details/113735644 博客源码快照

    探究java的ClassLoader及类变量初始化顺序

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。...通过学习这些知识点,开发者可以更好地优化代码、设计更健壮的系统,并解决与类加载和初始化相关的复杂问题。

    成员的初始化顺序和多态性

    ### 成员的初始化顺序 #### 实验背景与目标 在Java编程语言中,理解成员变量的初始化顺序对于正确地设计和实现类结构至关重要。通过本实验,我们将深入了解成员变量的初始化顺序,以及如何通过实际代码示例来验证...

    Java关于含有继承类的成员初始化过程讲解

    Java关于含有继承类的成员初始化过程讲解 titre1:Java中的继承类成员初始化过程 在Java中,继承类的成员初始化过程是一个复杂且容易让人困惑的地方。今天,我们将通过一个具体的实例来讲解这个过程,以帮助读者...

    c++编程思想 内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    详解Java的初始化与清理

    Java的初始化与清理是编程过程中至关重要的环节,它关乎到程序的正确运行和资源的有效管理。本文将深入探讨Java中的初始化过程,包括对象的构造器初始化以及类成员的初始化顺序,同时也会涉及Java的垃圾回收机制,即...

    c++基础语法:构造函数初始化列表

    5. **继承与初始化列表**: - 在继承关系中,只有初始化列表能用于初始化基类的私有成员。如果基类的某个成员需要初始化,必须在派生类的构造函数初始化列表中显式指定。 6. **示例**: ```cpp class MyClass { ...

Global site tag (gtag.js) - Google Analytics