構造函數的意義:對事物進行初始化(當聲明變量為私有)
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();
}
}