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

您可以在构造函数中将实例变量声明为参数吗?

轩辕啸
2023-03-14
问题内容

这行得通吗?

class Cars{
    Cars(int speed, int weight)
}

我只是想弄清楚构造函数。如果将其称为方法,那么我认为它的工作原理与方法类似。您可以在调用该方法时使用的方法中创建局部变量,因此我不明白为什么在构造函数使用它们之前必须先声明实例变量。


问题答案:

在您的示例中,速度和权重不是实例变量,因为它们的范围仅限于构造函数。您可以在外部声明它们,以使它们在整个类(即整个类的对象)中可见。构造函数的目的是初始化它们。

例如以这种方式:

public class Car
{
    // visible inside whole class
    private int speed;
    private int weight;

    // constructor parameters are only visible inside the constructor itself
    public Car(int sp, int w)
    {
        speed = sp;
        weight = w;
    }

    public int getSpeed()
    {
        // only 'speed' and 'weight' are usable here because 'sp' and 'w' are limited to the constructor block
        return speed;
    }
}

这里spw是被用于设置实例变量的初始值的参数。它们仅在构造函数执行期间存在,并且无法以任何其他方法访问。



 类似资料:
  • 问题内容: 这两种方法有什么优势吗? 范例1: 范例2: 问题答案: 没有区别-实例变量初始化实际上是由编译器放入构造函数中的。 第一种变体更具可读性。 你不能使用第一个变体进行异常处理。 另外还有初始化块,编译器也将其放在构造函数中: 但是,字段声明不是任何方法的一部分,因此它们不能像语句那样执行。相反,Java编译器会自动生成实例字段初始化代码,并将其放入该类的一个或多个构造函数中。初始化代码

  • 假设我想为整数列表声明一个简单的代数数据类型: 但是,最后一个声明导致一个错误 数据类必须至少有一个主构造函数参数 > 为什么存在这种限制?查看文档,似乎没有很好的技术理由要求数据类构造函数为非空 不需要编写大量样板代码就可以表达空构造函数吗?如果我把最后的声明改成 然后我就失去了和的免费实现,它们是通过声明免费提供的。 编辑 亚历克斯·费拉托夫在下面给出了一个简短的解决方案。显然,您永远不需要超

  • 问题内容: 是否可以使用Golang一次声明多个变量? 例如,在Python中,您可以输入以下内容: 所有值均为80。 问题答案: 是的你可以: 您可以对内联分配执行类似的操作,但不太方便:

  • 问题内容: 目前,我正在研究Sams出版的《 24小时自学Android应用程序开发》一书。我是Java,Android或其他方面的新手。我在ActionScript 3中具有非常扎实的背景,该语言与Java具有足够的相似性,因此该语言本身并不难掌握,但对于本书中某些代码示例的基本原理,我仍然存在一些疑问。例如,以下是第9小时的示例代码随附的函数: 在此函数签名中,作者已将scoreTable参数

  • 如何让Jackson将“name”视为具有@JsonProperty注释? 现在,我得到了一个错误,无法识别的字段“sum”,因为它将每个getter都视为可序列化属性。 如果我添加类注释: 序列化时,我得到一个空字符串。我希望Jackson能在构造函数参数上看到@JsonProperty并解决它。 如果我将类注释更改为: 然后我得到了“doNotSerialize”字段。 如果我在构造函数上设置