掌握目標:
1.掌握構造方法的概念以及調用時機
2.掌握構造方法的重載
3.掌握匿名對象的使用
首先我們先回顧一下方法的構造:
對象的產生格式:
類名稱 對象名稱 =new 類名稱()
因爲有“()”所以表示的是一個方法。這實際上就是一種構造方法。
只要有對象實例化,就要有構造方法。
構造方法的定義格式
class 類名稱{
private訪問權限 類名稱 (類型 參數,類型 參數){
程序語句
}
我們要注意的是:構造方法的名稱必須與類名稱一致。
構造方法中,不能有任何的返回值聲明,不能使用return返回值。
我們先來看一組代碼:
class Person
{
public Person(){ //聲明構造方法、
System.out.println("一個新的Person對象產生");
}
}
public class Oor
{
public static void main(String args[])
System.out.print("聲明對象:Person per=null;");
Person per=null ; //聲明對象
System.out.print("實例化對象:")
per = new Person(); // 實例化對象
}
}
那麼由此代碼我們可以知道。我們聲明對象,並不去調用構造方法,在實例化對象的時候纔會去調用構造方法。大概瞭解了構造的方法之後,在這個時候又有一個問題出現,在之前編寫類的時候並沒有定義構造方法,那麼爲什麼也可以執行呢?
實際上這就是屬於Java 的操作機制。在整個java的操作中,如果一個類中沒有明確的生命一個構造方法,則會自動生成一個無參數什麼都不做的構造方法,供用戶使用,就類似於以下的形式:
class Person
{
public Person(){ //如果沒有編寫構造方法,則會自動生成此代碼。
}
}
構造方法的主要目的是爲類中的屬性初始化,既然是方法,則方法中肯定可以傳遞參數,此時定義一個構造,同時向裏面傳遞參數。
class Person
{
private String name ;
private int age ;
public Person(){} //構造一個無參數什麼都不做的方法
public Person(String n){
this.setName(n);
}
public Person(String n,int a){
this.setName(n);
this.setAge(a);
}
public void setName(String n){
name = n;
}
public void setAge(int a){
if(a>0&&a<150){
age=a;
}
}
public String getName(){
return name;
}
public int getAge()
{
return age;
}
public void tell(){
System.out.print("姓名:"+this.getName()+";年齡:"+this.getAge());
}
};
public class Oor
{
public static void main(String args[]){
System.out.print("聲明對象:Person per = null");
Person per =null;
System.out.print("實例化對象:per =new Person();");
per = new Person("張三",30);
per.tell();
}
}
由上面的代碼我們所知道,構造方法的主要目的是爲類中的屬性初始化。
構造方法和普通方法一樣,都是支持重載操作。只要參數的類型或者個數不同,就可以完成方法重載操作。
我們再看一組代碼,然後我們來理解匿名對象:
class Person
{
private String name ;
private int age ;
public Person(String n,int a){
this.setName(n);
this.setAge(a);
}
public void setName(String n){
name = n;
}
public void setAge(int a){
if(a>0&&a<150){
age=a;
}
}
public String getName(){
return name;
}
public int getAge()
{
return age;
}
public void tell(){
System.out.print("姓名:"+this.getName()+";年齡:"+this.getAge());
}
};
public class Oor
{
public static void main(String args[]){
new Person("張三",30).tell();
}
}
在這組代碼中,大家可以看到。我們是直接開闢堆內存空間然後調用tell方法。
輸出的結果是一樣的。然後我們理解一下什麼是匿名對象.
匿名:沒有名字,在java中,如果一個對象只是用一次,那麼可以將其定義爲匿名對象。