美文网首页读书
关于构造函数的Java面试问题

关于构造函数的Java面试问题

作者: 南门屋 | 来源:发表于2022-06-24 18:17 被阅读0次

1.什么是构造函数?

image

构造函数用于初始化对象的状态。与方法类似,构造函数还包含在创建对象时执行的语句集合(即指令)。

2.我们有Java中的复制构造函数吗?

像C ++一样,Java也支持拷贝构造函数。但是,与C ++不同的是,如果您不写自己的Java,则不会创建默认的拷贝构造函数。

要将一个对象的值复制到另一个对象中,可以使用:构造函数

将一个对象的值分配给另一个对象

Object类的clone()方法

3.什么是构造器链接?

构造函数链是从一个构造函数调用另一个构造函数的技术。this()用于调用相同的类构造函数,其中super()用于调用超类构造函数。

// Java program to illustrate Constructor Chaining

// within same class Using this() keyword

class Temp

{

// default constructor 1

// default constructor will call another constructor

// using this keyword from same class

Temp()

{

    // calls constructor 2

    this(5);

    System.out.println("The Default constructor");

}

// parameterized constructor 2

Temp(int x)

{

    // calls constructor 3

    this(5, 15);

    System.out.println(x);

}

// parameterized constructor 3

Temp(int x, int y)

{

    System.out.println(x * y);

}

public static void main(String args[])

{

    // invokes default constructor first

    new Temp();

}

}

4.我们可以从超类构造函数中调用子类构造函数吗?

不。在java中没有办法从超类构造函数中调用子类构造函数。

5.如果为构造函数保留返回类型会发生什么?

理想情况下,构造函数不能有返回类型。根据定义,如果一个方法有一个返回类型,它不是一个构造函数。它将被视为一种常规方法。但是,编译器会发出警告,指出该方法具有构造函数名称。示例:

class GfG

{

int GfG()

{

    return 0;    // Warning for the return type

}

}

6.什么是无参数构造函数?

不带参数的构造函数被称为no-arg构造函数。java中的默认构造函数始终是一个无参数构造函数。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

class GfG

{

public GfG()

{

    //No-arg constructor

}

}

7.无参构造函数与默认构造函数不同的地方?

如果一个类不包含构造函数声明,那么隐式声明一个没有形式参数且没有throws子句的默认构造函数。

如果声明的类是原始类Object,则默认构造函数具有空的主体。否则,默认构造函数只是简单地调用没有参数的超类构造函数。

8.什么是私人构造函数,它们在哪里使用?

像任何方法一样,我们可以为构造函数提供访问说明符。如果它是私人的,那么它只能在课堂内进行访问。

我们使用私有构造函数的主要场景是:内部构造器链接

单件类设计模式

9.我们什么时候需要构造函数重载?

有时需要用不同的方式初始化一个对象。这可以使用构造函数重载来完成。不同的构造函数可以通过实现不同的代码行来完成不同的工作,并根据传递的参数的类型和数量来调用。

根据情况,在重载构造函数中使用特定数量的参数调用构造函数。

相关文章

网友评论

    本文标题:关于构造函数的Java面试问题

    本文链接:https://www.haomeiwen.com/subject/opflvrtx.html