构造函数的意义:对事物进行初始化(当声明变量为私有)
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();
}
}