资讯专栏INFORMATION COLUMN

java类内部代码执行顺序

xingpingz / 1894人阅读

摘要:先看以下代码执行代码后输出该问题涉及静态初始化代码块构造代码块构造方法当涉及到继承时,按照如下顺序执行执行父类的静态代码块输出执行子类的静态代码块输出执行父类的构造代码块输出执行父类的构造函数输出无执行子类的构造代码块输出执行子类的构造函数

先看以下代码

public class HelloB extends HelloA
{
    public HelloB()
    {
    }
    {
        System.out.println("I’m B class");
    }
    static
    {
        System.out.println("static B");
    }
    public static void main(String[] args)
    {
        new HelloB();
    }
}
class HelloA
{
    public HelloA()
    {
    }
    {
        System.out.println("I’m A class");
    }
    static
    {
        System.out.println("static A");
    }
}

执行代码后输出
static A
static B
I’m A class
I’m B class

该问题涉及:静态初始化代码块、构造代码块、构造方法
当涉及到继承时,按照如下顺序执行:
1、执行父类的静态代码块

    static {
        System.out.println("static A");
    }

输出:static A
2、执行子类的静态代码块

static {
        System.out.println("static B");
    }

输出:static B
3、执行父类的构造代码块

    {
        System.out.println("I’m A class");
    }

输出:I"m A class
4、执行父类的构造函数

    public HelloA() {
    }

输出:无
5、执行子类的构造代码块

    {
        System.out.println("I’m B class");
    }

输出:I"m B class
6、执行子类的构造函数

    public HelloB() {
    }

输出:无

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72344.html

相关文章

  • 谈谈Java的面向对象

    摘要:也就是说,一个实例变量,在的对象初始化过程中,最多可以被初始化次。当所有必要的类都已经装载结束,开始执行方法体,并用创建对象。对子类成员数据按照它们声明的顺序初始化,执行子类构造函数的其余部分。 类的拷贝和构造 C++是默认具有拷贝语义的,对于没有拷贝运算符和拷贝构造函数的类,可以直接进行二进制拷贝,但是Java并不天生支持深拷贝,它的拷贝只是拷贝在堆上的地址,不同的变量引用的是堆上的...

    ormsf 评论0 收藏0
  • Java基础(笔记)

    摘要:拆箱将包装类型转换为基本类型的过程。否则会抛出异常。默认采用单链表解决冲突,如果链表长度超过,将单链表转换为红黑树。内部使用红黑树实现,存储映射。红黑树减弱了对平衡的要求,降低了保持树平衡需要的开销,在实际应用中,统计性能超过平衡二叉树。 引言 showImg(https://segmentfault.com/img/bVbv7Mr?w=242&h=410); 在学习《Java编程的逻...

    PrototypeZ 评论0 收藏0
  • Java设计模式--单例模式

    摘要:所以这段代码也就避免了代码一中,可能出现因为多线程导致多个实例的情况。从内部看是一个饿汉式的单例,但是从外部看来,又的确是懒汉式的实现枚举使用是不是很简单而且因为自动序列化机制,保证了线程的绝对安全。 在介绍单例模式之前,我们先了解一下,什么是设计模式?设计模式(Design Pattern):是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。目的:使用设计模式是为了...

    StonePanda 评论0 收藏0
  • Java 初始化与清理(5)

    摘要:随着计算机革命的发展,不安全的编程方式已逐渐成为编程代价高昂的主因之一。 随着计算机革命的发展,不安全的编程方式已逐渐成为编程代价高昂的主因之一。 1.用构造器确保初始化 构造器:在创建对象时被自动调用的特殊方法. 构造器命名问题:1.所取得任何名字可能与类的某个成员命名冲突;2.调用构造器是编译器的责任,所以应该让编译器知道该调用哪个方法. 构造器命名:与类名相同,所以每个方法首字...

    cheng10 评论0 收藏0
  • 深入理解虚拟机之文件结构

    摘要:对象创建与访问指令虽然类实例和数组都是对象,但虚拟机对类实例和数组的创建和操作使用了不同的字节码指令。异常处理指令在虚拟机中,处理异常语句不是由字节码指令来实现的,而是采用异常表的方式。 《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版》读书笔记与常见面试题总结 本节常见面试题(推荐带着问题阅读,问题答案在文中都有提到): 简单介绍一下Class类文件结构(常量池主要存放的是...

    张宪坤 评论0 收藏0

发表评论

0条评论

xingpingz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<