当前位置: 首页 > 面试题库 >

实例初始值设定项和构造函数之间有什么区别?

柯英奕
2023-03-14
问题内容

只是想知道编译这样的代码的原因:

class MyClass extends AnotherClass {
  {
    MySecondClass object = new MySecondClass();
    object.doSomething();
  }
}

此代码与构造函数中的代码有什么区别?此代码 创建对象 之前 执行。


问题答案:

花括号内没有名称的代码将成为类构造函数的一部分,并在类构造函数所包含的逻辑之前执行。

快速示例:

public class Foo {
    {
        System.out.println("Before Foo()");
    }

    public Foo() {
        System.out.println("Inside Foo()");
    }

    {
        System.out.println("Not After Foo()");
    }
}


 类似资料:
  • 仅初始化设置程序仅在对象构造期间向属性或索引器元素赋值。在对象构造过程中,构造函数的用例与初始化设置值的用例之间有什么区别? 样本1: 样本2: 示例3(忽略此示例,因为它与示例2相同):

  • 我有2个班: A类: B类: 我创建了一个主类,它只创建了一个新的: 我得到的输出是: 如您所见,在静态初始值设定项之前调用了的构造函数。 我知道这与我创建的循环依赖有关,但我的印象是静态初始化器应该总是在构造函数之前运行。 发生这种情况的原因是什么(技术上在java实现中)? 是否建议一起避免静态初始化器?

  • 我相信现代C初始值设定项列表对于初始化对象非常有用,甚至不需要定义自己的构造函数: 但是,当我的类从另一个类继承时,这不起作用: 我尝试添加

  • 问题内容: 一个简单的例子: HTML CSS 和之间有什么区别?仅支持浏览器 问题答案: 根据您的链接: 是一个CSS值,如果继承了一个属性,则该属性与“继承”相同;如果不继承一个属性,则其属性为“初始” 这是一个例子: 如果您要覆盖样式表中的某些CSS,但您更希望该值是继承的,而不是设置回浏览器的默认值,那么这种情况就很重要。 例如:

  • 所以我正在学习构造函数初始值设定项列表,我写了以下代码: 为此我使用了g编译器。它调用的是构造函数而不是复制构造函数。它应该调用复制构造函数,因为我正在创建一个对象来创建另一个对象?这里的问题是什么,标准对此怎么说?