一、構造方法java
定義:與類同名沒有返回值的方法稱爲構造方法;ui
public class test1 {
private String name;
private int age;
public test1(){
}this
}對象
上面的test1()是默認構造方法,即便沒有定義java虛擬機在運行的時候也會自動生成,繼承
固然若是定義了重載的構造方法便不會自動生成;ip
構造方法的做用有兩點1.經過構造方法創建一個對象;2.經過構造方法能夠快速的賦初值;get
public class Main {
public static void main(String[] args) {
test1 t1=new test1();//new後面加上構造方法創建了一個對象
}
}虛擬機
而若是類中有其它屬性的話能夠有構造方法的重載:class
public test1(String name, int age) {
this.name = name;
this.age = age;
}test
利用重載的構造方法能夠很快速的給對象賦初值,特別是對於private的屬性,若是用getter和setter很不方便;
public static void main(String[] args) {
test1 t1=new test1();
test1 t2=new test1("bob", 18);
System.out.println(t1);
System.out.println(t2);
}
輸出結果:
test1 [name=null, age=0]
test1 [name=bob, age=18]
t1沒有賦初值全部它裏面的值是系統設置的初值;
t2利用有參的構造方法,直接給屬性設置了初值,很是的方便,就不用setter方法來一個個設置值;
2. this
誰調用指向誰,是指向調用的對象;
舉例說明:
在上面的test1 類中加上如下fly()方法:
public void fly(){
System.out.println(this.name+"會飛");//this指向調用的對象
}
在運行中調用:
public static void main(String[] args) {
test1 t1=new test1();
test1 t2=new test1("bob", 18);
t1.fly();//方法中的this指向t1
t2.fly();//方法中的this指向t2
// System.out.println(t1);
// System.out.println(t2);
}
結果以下:
null會飛
bob會飛
另外this還須要注意的一點是用在構造方法中:
public test1(String name, int age) {
this();//在運行構造方法進行屬性賦值前是必定會先調用無參數的構造方法
this.name = name;
this.age = age;
}
固然構造方法調用主要看this(參數列表)看圓括號裏面的參數列表和哪個構造方法相同就執行哪個構造方法;
2. super:指向父類,調用父類的屬性和方法;
其實使用起來和this關鍵字差很少;
public test1(){
super();
}
上面的super(()調用的是父類的構造方法,若是沒有繼承父類的話,那麼它的父類是指向object(全部類的超類);
使用:suiper關鍵字加「 . 」能夠訪問父類能夠訪問的屬性和方法,通常用於區分被子類重寫了的方法;
使用this(參數列表)和super(參數列表)的構造方法注意事項:
a. 只可以位於構造方法的第一行;
b. 不能同時出如今一個構造方法中;
c. 老是會先訪問完父類的構造方法在訪問子類裏面的構造方法;