我們來看一個需求: 前面我們在創(chuàng)建人類的對象時, 是先把一個對象創(chuàng)建好后, 再給他的年齡和姓名屬性賦值, 如果現(xiàn)在我要求, 在創(chuàng)建人類的對象時, 就直接指定這個對象的年齡和姓名, 該怎么做? 這時就可以使用構造器.
創(chuàng)新互聯(lián)主要從事成都網站制作、成都網站設計、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務永善,十載網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575語法public class Study
{public static void main(String args[])
{Person p = new Person(70,"杜輿江");
//在創(chuàng)建p對象時直接為其屬性賦值
}
}
class Person
{int age;
String name;
//構造器語法
//1.構造器名應與類名一致: Person.
//2.沒有返回值: 不可以寫void int等, 也不可以在代碼塊的最后加入return.
//3.在創(chuàng)建對象時, 系統(tǒng)會自動地調用該類的構造器完成對象的初始化.
//4.形參列表與定義方法時的規(guī)則一致.
//5.構造器前也有訪問修飾符.
public Person(int pAge,Sting pName)
{age = pAge;
name = pName;
}
}
要點一個類可以定義多個不同的構造器, 即構造器重載
public class Study
{public static void main(String[] args)
{//構造器重載, 我的實參既可以是數(shù)字, 也可以是數(shù)字和字符串
Person p1 = new Person(20);
Person p2 = new Person(19,"小杜");
cout
}
}
class Person
{int age = 18;
String name;
public Person(String pName);
{age = pName;
}
public Person(int pAge,String pName)
{age = pAge;
name = pName;
}
}
2.如果程序員沒有定義構造器, 系統(tǒng)會自動給類生成一個默認無參構造器(也叫默認構造器), 可以用反編譯去看.
3.一旦自己定義了自己的構造器, 默認的構造器就被覆蓋了, 就不能再使用默認的無參構造器, 如果想使用, 必須顯式定義一下.
public class Exercise {public static void main(String[] args) {Person person = new Person(18,"Jack");
Person person1 = new Person();
//如果沒有顯式定義, 無法運行, 會報錯
System.out.println("運行成功");
}
}
class Person {int age;
String name;
public Person(int age, String name) {this.age = age;
this.name = name;
}
//顯示定義
public Person() {}
}
對象創(chuàng)建流程public class Exercise {public static void main(String[] args) {Person jack = new Person(18, "Jack");
}
}
class Person {int age = 10;
String name;
public Person(int age, String name) {this.age = age;
this.name = name;
}
}
1.加載Person類信息(Person.class),只會加載一次
2.在堆中分配空間(地址)
3.完成對象初始化[3.1默認初始化 age = 0 name = null(都為默認值) 3.2顯式初始化, age = 18 name = null 3.3 構造器初始化 age = 18 name = Jack]
4.把對象在堆中地址, 返回給p(對象名)
this關鍵字 理解this 可以理解為替換對象 ,此時涉及的是哪個對象, 那么 this 就是它
語法public class Exercise {public static void main(String[] args) {Person jack = new Person(18, "Jack");
//在這里
//this.age 和 Jack.age相同
//this.name 和 Jack.name相同
}
}
class Person {int age = 10;
String name;
public Person(int age, String name) {this.age = age;
this.name = name;
}
}
要點1.this 關鍵字可以用來訪問本類的屬性, 方法, 構造器
2.訪問成員方法的語法: this.方法名(參數(shù)列表)
3.訪問構造器語法:this(參數(shù)列表); 注意只能在構造器中使用(即只能在構造器中訪問另外一個構造器, 必須放在第一 條語句)
4.this.方法調用 與 方法調用不同(區(qū)別在繼承講)
public class Exercise {public static void main(String[] args) {Person person = new Person();
System.out.println(person.age + "\t" + person.name);
person.sayHello();
person.Marry();
}
}
class Person {int age;
String name;
public void sayHello() {System.out.println("Hello!");
}
//this 在方法中的使用
public void Marry() {this.sayHello();
System.out.println("Let's marry!");
}
public Person(int age, String name) {this.age = age;
this.name = name;
}
//this 在構造器中的使用
public Person() {this(18, "Jack");//必須在該構造器的第一行
System.out.println("成功!");
}
}
4.this 不能在類定義的外部使用,只能在類定義的方法中使用。
IDEA 快捷鍵可在 Settings-Keymap 中配置
刪除當前行: ctrl + y
復制當前行并粘貼至下一行: ctrl + d
補全代碼: alt + /
增加/取消注釋: ctrl + /
導入該行需要的類: 選中,alt + enter
快速格式化代碼: ctrl + alt + L
運行程序: shift + f10
生成構造器: alt + insert(insert 使用需要配合 fn)
查看一個類的層級關系: ctrl + H
將光標放在一個方法上, 輸入ctrl + B, 可以選擇定位到方法
自動地分配變量名, 通過在后面.var
模板file-settings-editor-Live templates 可以查看有哪些模板, 也可以自定義添加修改
main
sout
fori
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧