gpt4 book ai didi

java - 构造函数重载的优点

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:09 24 4
gpt4 key购买 nike

我是 Java 的新手,正在尝试学习这门学科,之前只接触过 HTML/CSS 编程。我从 Herbert Schildt 开始,并浏览了几页。

我无法理解构造函数重载的确切优势。为了灵 active 使用单个构造函数重载方法不是更容易吗?此外,如果我尝试使用构造函数重载来使用一个对象来初始化另一个对象,还有更简单的方法可以做到!那么我应该在什么情况下使用构造函数重载有什么好处。

最佳答案

构造函数重载对于模拟默认值或从现有实例构造对象(复制)非常有用
这是一个例子:

public class Color {

public int R, G, B, A;

// base ctr
public Color(int R, int G, int B, int A) {
this.R = R;
this.G = G;
this.B = B;
this.A = A;
}

// base, default alpha=255 (opaque)
public Color(int R, int G, int B) {
this(R, G, B, 255);
}

// ctr from double values
public Color(double R, double G, double B, double A) {
this((int) (R * 255), (int) (G * 255), (int) (B * 255), (int) (A * 255));
}

// copy ctr
public Color(Color c) {
this(c.R, c.G, c.B, c.A);
}

}

这里,第一个构造函数非常简单。您为颜色指定 R、G、B 和 Alpha 值。

虽然这足以使用 Color 类,但您提供了第二个构造函数 liter,如果用户未指定,它会自动将 255 分配给 alpha。

第三个 ctr 表明您可以使用介于 0. 和 1. 之间的 double 而不是整数来实例化 Color 对象。

最后一个以 Color 作为唯一参数,它复制给定的对象。

好处还在于第一个构造函数总是被调用,您可以使用它来手动计算您的实例。假设您有一个 private static int count=0 属性,您可以像这样跟踪 Color 实例的数量:

    // base ctr
public Color(int R, int G, int B, int A) {
this.R = R;
this.G = G;
this.B = B;
this.A = A;
++count;
}

count从任何构造函数递增。

关于java - 构造函数重载的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444198/

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