构造器主要用来确保我们使用的对象已经被初始化过了。不必担心忘记初始化的现象。
重载的构造器和重载的方法
import java.util.*;
class Tree{
int height;//字段
Tree(){
System.out.println("Planting a seeding");
height =0;
}
Tree(int initialHeight){
height = initialHeight;
System.out.println("Creating new Tree that is "+ height +" feet tall");
}
void info(){
System.out.println("Tree is "+ height + " feet tall");
}
void info(String s){
System.out.println(s+":Tree is "+ height +" feet tall");
}
}
public class GSX52 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
Tree t =new Tree(i);
t.info();
t.info("overloaded method");
}
new Tree();
}
}
运行结果配图
方法重载是利用了形参来区分方法,虽然方法名相同,但是有的方法有参数的传递,有的方法没有参数的传递。通过有误参数的传递可以区别名字相同但statement不同的方法。
import java.util.*;
class Tree{
int height;//字段
Tree(){
System.out.println("Planting a seeding");
height =0;
}
Tree(int initialHeight){
height = initialHeight;
System.out.println("Creating new Tree that is "+ height +" feet tall");
}
void info(){
System.out.println("Tree is "+ height + " feet tall");
}
void info(String s){
System.out.println(s+":Tree is "+ height +" feet tall");
}
void info(int a){
System.out.println("参数形式不同方法也不同");
}
}
public class GSX52 {
public static void main(String[] args) {
for(int i=0;i<5;i++){
Tree t =new Tree(i);
t.info();
t.info("overloaded method");
t.info(1);
}
new Tree();
}
}
运行结果配图
当传递的参数的类型不同时,选择的方法也是不同的尽管他们具有相同的方法名且都进行了参数的传递。
public class GSX423 {
static void f(String s, int i){
System.out.println("String:"+s+ ", int:"+i);
}
static void f(int i,String s){
System.out.println("int:"+i+", String:"+s);
}
public static void main(String[] args) {
f("String first",11);
f(99,"Int first");
}
}
运行结果配图
尽管传递的参数类型相同而且方法的名称也相同但是由于传递的参数的顺序是不同的,所以编译器也可以区分方法知道应该调用含有那种陈述语句的方法。但是这会使的程序难于维护,所以应尽量减少使用,