构造函数重载 java
Constructor overloading java
Java如何决定在下面的程序中调用哪个构造函数?
public class Test
{
Test(int a, int b)
{
System.out.println("a = "+a+" b = "+b);
}
Test(int a, float b)
{
System.out.println("a = "+a+" b = "+b);
}
public static void main (String args[])
{
byte a = 10;
byte b = 15;
Test test = new Test(a,b);
}
}
调用了第一个以第二个参数为int的构造函数,但是如果我删除了第一个构造函数,则调用了另一个构造函数。如果两个构造函数都存在,为什么调用第一个?
在第一种情况下,两个 byte
个参数都扩展为 int,这比将一个参数转换为 float 更可取。
在第二种情况下,没有构造函数占用两个 int
,因此唯一可能的选择涉及转换。
语言定义文档包含对构造函数解析的详尽讨论。
Java如何决定在下面的程序中调用哪个构造函数?
public class Test
{
Test(int a, int b)
{
System.out.println("a = "+a+" b = "+b);
}
Test(int a, float b)
{
System.out.println("a = "+a+" b = "+b);
}
public static void main (String args[])
{
byte a = 10;
byte b = 15;
Test test = new Test(a,b);
}
}
调用了第一个以第二个参数为int的构造函数,但是如果我删除了第一个构造函数,则调用了另一个构造函数。如果两个构造函数都存在,为什么调用第一个?
在第一种情况下,两个 byte
个参数都扩展为 int,这比将一个参数转换为 float 更可取。
在第二种情况下,没有构造函数占用两个 int
,因此唯一可能的选择涉及转换。
语言定义文档包含对构造函数解析的详尽讨论。