Java类构造函数

标签 java class constructor

我是 Java 新手。最近Java测试中有一个问题不太明白,希望大家能帮帮我。

分析以下代码:

class Circle {
    private double radius;
    public Circle(double radius) {
        radius = radius;
    }
}

答案如下:

A) 程序可以编译,但无法创建具有指定半径的 Circle 对象。该对象的半径始终为 0。

B) 程序出现编译错误,因为无法将半径赋值给半径。

C) 该程序有编译错误,因为它没有 main 方法。

D) 程序无法编译,因为 Circle 没有默认构造函数。

在我看来,我认为A是正确的。 B 显然是错误的,因为你当然可以完成作业。 C 是错误的,因为没有 main 方法是完全可以的。 D 也是错误的,因为默认构造函数不是必需的。这给我留下了 A。

不太明白A的写法,我觉得这段代码可以改成:

this.radius = radius;

正确。

谁能帮我澄清一下吗?非常感谢!

最佳答案

从字面上看,A是正确的。

程序可以编译,但无法创建具有指定半径的 Circle 对象。该对象的半径始终为 0。

您仍然可以创建Circle对象,但其半径始终为0。这意味着,您分配了错误的声明。

在此构造函数中:

public Circle(double radius) {
    radius = radius; 
}

您仅将 radius 参数分配给其自身,这意味着您实际上并未将其传递给类变量 radius。这就是为什么您使用 this 来归属类成员

因此正确的声明是将radius参数变量传递给radius类变量

this.radius = radius;

关于Java类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41092189/

相关文章:

C++无法实现默认构造函数

java - 如何将身份验证从 LDAP 更改为 JDBC 以保护我的应用程序

c++ - 单行类声明和实例化

swift - 在 Swift 3 中获取初始化值

python - python 中的内部类方法与实例方法

c# - 使用构造函数从 dapper 获取非原始类型的对象

java - 在 JGroups UDP 配置中我们需要同时使用 FD_SOCK 和 FD_ALL 吗?

JavaFX 2.2 TextField 最大长度

java - 在我们的应用程序中保留/验证用户登录凭据的最佳方法是什么

scala - 如何从 Scala 中的派生类辅助构造函数调用辅助基类构造函数?