第五章 初始化与清理
方法重载:相同方法名称 + 不同参数列表
构造器重载 成员函数重载
为什么方法签名不包含 方法返回值?
void f() {} 与 int f(){ return 1; } 编译器很容易区分。
但是在调用 有返回值的f()方法时,如下都行。 第二行的调用编译器就无法确分这两个方法了
int aInt = f(); f();
- 涉及基本类型的重载
代码
// boolean can't be automatically converted static void prt(String s) { System.out.println(s); } void f1(char x) { prt("f1(char)"); } void f1(byte x) { prt("f1(byte)"); } void f1(short x) { prt("f1(short)"); } void f1(int x) { prt("f1(int)"); } void f1(long x) { prt("f1(long)"); } void f1(float x) { prt("f1(float)"); } void f1(double x) { prt("f1(double)"); } void f2(byte x) { prt("f2(byte)"); } void f2(short x) { prt("f2(short)"); } void f2(int x) { prt("f2(int)"); } void f2(long x) { prt("f2(long)"); } void f2(float x) { prt("f2(float)"); } void f2(double x) { prt("f2(double)"); } void f3(short x) { prt("f3(short)"); } void f3(int x) { prt("f3(int)"); } void f3(long x) { prt("f3(long)"); } void f3(float x) { prt("f3(float)"); } void f3(double x) { prt("f3(double)"); } void f4(int x) { prt("f4(int)"); } void f4(long x) { prt("f4(long)"); } void f4(float x) { prt("f4(float)"); } void f4(double x) { prt("f4(double)"); } void f5(long x) { prt("f5(long)"); } void f5(float x) { prt("f5(float)"); } void f5(double x) { prt("f5(double)"); } void f6(float x) { prt("f6(float)"); } void f6(double x) { prt("f6(double)"); } void f7(double x) { prt("f7(double)"); }
入参 - 整型常量时,如f5,f6,f7 int型会自动向上转型(没有精度丢失)
void testConstVal() { prt("Testing with 5"); f1(5);f2(5);f3(5);f4(5);f5(5);f6(5);f7(5); } //Output f1(int) f2(int) f3(int) f4(int) f5(long) f6(float) f7(double)
入参 - char型时,先被转换成int 然后同int型入参结果
void testChar() { char x = 'x'; prt("char argument:"); f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x); } //Output f1(char) f2(int) f3(int) f4(int) f5(long) f6(float) f7(double)
入参 - byte型时,自动向上转型
void testByte() { byte x = 0; prt("byte argument:"); f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x); } //Output f1(byte) f2(byte) f3(short) f4(int) f5(long) f6(float) f7(double)
入参 - short型时,自动向上转型
void testShort() { short x = 0; prt("short argument:"); f1(x);f2(x);f3(x);f4(x);f5(x);f6(x);f7(x); } //Output f1(short) f2(short) f3(short) f4(int) f5(long) f6(float) f7(double)
如果入参类型表数范围 > 方法入参类型 编译报错
默认构造器 = 空参构造器
- 当class中构造器为0个时,系统默认提供空参构造
- 当class中构造器 != 0个时,系统不提供空参构造