Java3 構造函數與this的初步認識

構造函數的意義:對事物進行初始化(當聲明變量為私有)

Person p = new Person();//創建對象

程序中括號內為初始化數值 數據類型都帶有默認初始值。
例如想通過方法訪問private變量 并有初始值(非默認)

構造函數格式:

1.函數名和類型相同。

2.沒有返回值類型。

3.沒有具體的返回值

package Xuexi;
//使人 一對象實例化時就有姓名
 class TestPerson
{
   private String name;
    private int age;
    public TestPerson(String n,int a) {//構造方法 初始化變量
        name=n;
        age=a;
    }
    /*public void setName(String n1) {  
        name=n1;
    }
    public String getName() {
        return name;
    }
    public void setAge(int a1) {
        age=a1;
    }
    public int getAge() {
        return age;
    }*/
    void show() {System.out.println(name+age);}
}

public class Person {
    public static void main(String []args) {
        
        TestPerson p=new TestPerson("xiaoming", 21);//通過外界賦予初始化變量()為初始值填充部分
        /*p.setName("xiaohong");
        p.setAge(21);*/
        p.show();
    }
}

一般函數和構造函數運行上的區別

構造函數在對象創建時執行,只執行一次。
一般函數在創建后才能被調用,可以使用多次
即:一般方法需要先創建對象 對象創建需要先初始化(可以使用創建的默認值();默認構造方法)
多構造函數在類中體現可以是重載模式。


構造模式可以私有化 但只能在本類中使用。私有化以后,其他程序無法創建該類的對象。
在創建類時,類會創建默認的構造函數,如果自己創建構造函數,默認構造函數會消失。

private TestPerson(String n,int a) {//構造方法 初始化變量
        name=n;
        age=a;
這種情況下 就無法通過構造方法進行初始化(默認的因為你有構造方法消失了)

this

this();帶上參數列表的方式可以訪問其他構造函數
比如 this(“jisi”)訪問帶一個字符串參數的構造函數
注意:任何構造方法都有this

class TestPerson
{
   private String name;
    private int age;
    private  TestPerson(String n1) {
        name=n1;
    }
    public TestPerson(String n,int a) {//構造方法 初始化變量
        this(n);//通過外界傳入TestPerson構造方法中的n 
        //將n中的初始值傳給this中的其他構造方法中的n1變量
        age=a;
    }
    
    void show() {System.out.println(name+age);}
}

public class Person {
    public static void main(String []args) {
        
        TestPerson p=new TestPerson("xiaoming", 21);//通過外界賦予初始化變量()為初始值填充部分
        
        p.show();
    }}

this語句必須定義在構造函數的第一行 因為初始化動作要先執行

this小例子 判斷是否同齡

class TestPerson
{
   private String name;
    private int age;
    private  TestPerson(String n1) {
        name=n1;
    }
    public TestPerson(String n,int a) {//構造方法 初始化變量
        this(n);//通過外界傳入TestPerson構造方法中的n 
        //將n中的初始值傳給this中的其他構造方法中的n1變量
        age=a;
    }
    void show() {System.out.println(name+age);}
    public boolean equalsAge(TestPerson p1) {
        return p1.age==this.age;
    }
}
public class Person {
    public static void main(String []args) {
        TestPerson p=new TestPerson("xiaoming", 21);//通過外界賦予初始化變量()為初始值填充部分
        TestPerson pp=new TestPerson("xiaohua", 22);
        boolean b=p.equalsAge(pp);
        System.out.println(b);
        p.show();
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容