gpt4 book ai didi

Java - 尝试理解重载方法是如何工作的

转载 作者:行者123 更新时间:2023-12-02 11:26:28 24 4
gpt4 key购买 nike

我刚刚开始学习 Java,并且遇到了有关方法重载的问题。

我想知道是否可以在相关重载方法的另一个变体的范围内调用重载方法的变体。

我的主要问题是:这样做可能会出现什么问题?

例如:

public class RoomClass {

int roomNo = 1;
String roomType = "Lecture Hall";
String roomArea = "First Floor";
boolean ACMachine = true;

protected void setData(int roomNo, String roomType, String roomArea, boolean ACMachine) {

setData(roomNo);
setData(roomType, roomArea);
setData(ACMachine);
}

protected void setData(int roomNo) {
this.roomNo = roomNo;
}

protected void setData(String roomType, String roomArea) {

this.roomType = roomType;
this.roomArea = roomArea;
}

protected void setData(boolean ACMachine) {

this.ACMachine = ACMachine;
}
}

上面的代码是一个练习。我在网上或书中找不到我的问题的答案。我想做的是避免重复代码,所以我想“为什么不调用其他方法,因为它们正在做我需要的事情呢?”。所以我只是将所有其他方法聚合到第一个方法中。

最佳答案

这不仅安全,而且是很常见的事情。 Java 没有默认参数值,因此您经常会看到参数较少的重载调用参数较多的重载并提供默认值。例如:

public void foo(int a, int b) {
// do something with a and b
}

public void foo(int a) {
// supply default value of 0 for b
foo(a, 0);
}

可能出现的一个问题是,如果有人扩展您的类并覆盖foo(int, int)。这也会影响 foo(int) 的行为,这可能是意想不到的。为了防止这种情况,您可以将 foo(int, int) 或整个类设为 final。如果允许扩展,则应该记录哪些方法调用其他方法。这是不应该记录实现细节这一规则的罕见异常(exception)。

关于Java - 尝试理解重载方法是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49594361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com