Java构造方法,方法的重载和重写
构造方法也称构造函数,可以在创建对象时就初始化对象中属性的值。
构造方法的方法名必须要与类名保持一致,且没有返回值类型有没有void。
如
public class Test{
String name;
int id;
Test(){
//无参构造,默认情况下由编译器自动提供,自动提供的情况下不会显示在代码中,
//当主动提供任一一个构造方法(有参/无参)时编译器不会提供默认的无参构造
}
Test(String name,int id){
this.name = name;
this.id = id;
}
//第一个name为成员变量的name,第二个为有参构造的name()
//this代表当前在调用的对象,此处的this == t2
//当形参变量名和成员变量名不冲突时也可以不使用this关键字
// 例如
Test(String str ,int i){
name = str;
id = i;
}
public void static void main(String[]args){
Test t = new Test();//这里会默认调用Test()无参构造,
//即使没有写无参构造,也会调用由编译器提供的无参构造方法
//调用有参构造
Test t1 = new Test("THANKS",12);
//其中t 和 t1均为对象的引用(位于栈),new出来的才是对象(位于堆)
}
}
方法的重载
在同一个类中方法名相同但参数列表不同的方法构成方法重载
遵循的原则
1 两个or两个以上的方法在同一个类中
2 方法名相同
3 参数列表参数不同即参数的个数和对应位置的参数类型不同
注意(方法的返回值不是方法签名的一部分,不能单因为方法的返回值不同而认为是两个方法)
示例
public void t(String s,int i){
}
public void t(int i,String s){
}
public void t(String s, int i,float f){
//三个t方法构成重载
public static void main(String[]args){
Test t3 = new Test();
//传入相对于的实参调用对应的方法,编译器会根据方法的参数进行绑定
t3.t("s",1);//调用第一个方法
t3.t(2,"d");//调用第二个方法
}
}