第三十三天 面向對象part4 -構造匿名方法

掌握目標:

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中,如果一個對象只是用一次,那麼可以將其定義爲匿名對象。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章