1. 程式人生 > >面向物件 構造方法

面向物件 構造方法

1 構造方法

1.1 構造方法的定義格式

class 類名稱
{
    訪問許可權 類名稱(型別1引數1,型別2 引數2)
    {
        程式語句 ;
        //構造方法沒有返回值
    }
}

在構造方法的宣告中注意:
1,構造方法的名稱必須與類名稱一致。
2,構造方法的宣告處不能有任何返回值型別的宣告。
3,不能在構造方法中使用return返回一個值。

1.2 宣告構造方法

class Person
{   
    public Person()     //宣告構造方法
    {
        System.out.println("宣告一個構造方法"
) ; } } public class ConsDemo01 { public static void main(String[] args) { System.out.println("宣告物件,Person per = null ;") ; Person per = null ; //宣告物件 不會去呼叫構造方法 System.out.println("例項化物件,per = new Person();") ; per = new Person() ;//例項化物件 } }

1.3 構造方法的目的

構造方法的目的是,為類中的屬性初始化。既然是方法,則方法中肯定可以傳遞引數,此時定義一個構造方法,同時向裡邊傳遞引數。

class Person
{
    private String name ;   //宣告姓名屬性
    private int age ;       //宣告年齡屬性

    public Person(String n,int a)   //宣告構造方法,為類中屬性初始化
    {
        this.setName(n) ;   //構造方法中呼叫set()方法
        this.setAge(a);     //構造方法中呼叫set()方法                                    
} public void setName(String n) { name = n ; //為類中屬性賦值 } public void setAge(int a) { age = a ; //為類中屬性賦值 } public String getName() { return name ; } public int getAge() { return age ; } public void tell() { System.out.println("姓名: "+this.getName()+";年齡: "+this.getAge()) ; //直接呼叫get()方法輸出 } } public class ConsDemo02 { public static void main(String[] args) { Person per = new Person("張三",20) ; //宣告並例項化物件 per.tell() ; } }

1.4 構造方法的過載
構造方法和普通方法一樣,都可以過載的。

class Person
{
    private String name ;   //宣告姓名屬性
    private int age ;       //宣告年齡屬性

    public Person()         //宣告一個無參構造
    {
    }
    public Person(String n)         //宣告有一個引數的構造方法
    {
        this.setName(n) ;           //呼叫set()方法對類中屬性初始化
    }
    public Person(String n,int a)   //宣告構造方法,為類中屬性初始化
    {
        this.setName(n) ;   //構造方法中呼叫set()方法
        this.setAge(a);     //構造方法中呼叫set()方法                                    
    }
    public void setName(String n)
    {
        name = n ;          //為類中屬性賦值
    }
    public void setAge(int a)
    {
        age = a ;           //為類中屬性賦值
    }
    public String getName()
    {
        return name ;
    }
    public int getAge()
    {
        return age ;
    }
    public void tell()
    {
        System.out.println("姓名: "+this.getName()+";年齡: "+this.getAge()) ;
        //直接呼叫get()方法輸出
    }
}
public class ConsDemo02
{
    public static void main(String[] args)
    {
        Person per = new Person("張三",20) ;  //宣告並例項化物件
        per.tell() ;
    }
}

1.5 匿名物件
匿名物件,沒有名字,在java中如果一個物件只使用一次,則可以將其定義成匿名物件。

class Person
{
    private String name ;   //宣告姓名屬性
    private int age ;       //宣告年齡屬性

    public Person(String n,int a)   //宣告構造方法,為類中屬性初始化
    {
        this.setName(n) ;   //構造方法中呼叫set()方法
        this.setAge(a);     //構造方法中呼叫set()方法                                    
    }
    public void setName(String n)
    {
        name = n ;          //為類中屬性賦值
    }
    public void setAge(int a)
    {
        age = a ;           //為類中屬性賦值
    }
    public String getName()
    {
        return name ;
    }
    public int getAge()
    {
        return age ;
    }
    public void tell()
    {
        System.out.println("姓名: "+this.getName()+";年齡: "+this.getAge()) ;
        //直接呼叫get()方法輸出
    }
}
public class ConsDemo02
{
    public static void main(String[] args)
    {
        new Person("張三",20).tell() ;    //匿名物件,物件只調用一次
    }
}