class Person
{
private String name;
private int age;
//构造代码块
{
System.out.println("Person code run!");
}
//对象一建立就会调用构造函数,构造函数给对象进行初始
//当一个类中没有构造函数时,系统会默认给该类加入一个空参数的构造函数,当在类中自定义了构造函数,则默认的构造函数就没有了
Person()
{
System.out.println("name = "+name+","+"age = "+age);
cry();
}
Person(String n,int a)
{
name = n;
age = a;
System.out.println("name = "+name+","+"age = "+age);
cry();
}
Person(String n)
{
name = n;
System.out.println("name = "+name+","+"age = "+age);
cry();
}
//一般函数和构造函数早写法上不同,在运行时也不同;一个对象建立,构造函数只执行一次,而一般的方法可以被该对象调用多次
//什么时候定风翼构造函数:当分析事物时,该事物存在一些特性或行为,那么将这些内容定义在构造函数中;需要未知内容参与运算,就写参数
//即使已经有了构造函数,set和get还是需要保留,可以多次修改和获取对象的成员变量
public void setName(String n)
{
name = n;
}
public String Getname()
{
return name;
}
public void cry()
{
System.out.println("Cry……");
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person("lisi",20);
Person t = new Person("lisi");
Person m = new Person();
p.cry();
}
}
【注】
/*
构造代码块
作用:给对象进行初始化
对象一建立就执行,而且先于构造函数执行
构造代码块和构造函数的区别:
构造代码块是给所有对象统一初始化,而构造函数是给对应的对象进行初始化。
可以将构造函数的共性放在构造代码块里
*/
{
System.out.println("Person code run!");
}
**********************************************************************************************************************************
this关键字
this代表的时候什么?
本类的对象,this代表它所在函数所属对象的引用(那个对象在调用this所在的函数,this就代表哪个对象)
this的应用:当定义类中功能时,该函数内部要用到该函数的对象时这时用this来表示对象;
this语句用于构造函数之间互相调用;this可以用来区分同名变量;
class Person
{
private String name;
private int age;
Person(String name)
{
//name = name; /*注意,这样的初始化是不可以的,成员变量name无法被初始化;原因:当局部中有name变量时,就在局部中找,当局部中没有name时才去局部之外去寻找。故此时两个name是同一个变量*/
this.name = name;
}
Person(int age,String name)
{
this(name); //相当于p(name);
//this语句只能用于构造函数之间互相调用,不可以用于一般函数
//this语句只能用于构造函数的第一行,初始化要先执行,执行完再执行自己的初始化
this.age = age; //用来区分同名变量
//this.name = name; //这一赋值前面一个构造函数已经完成了
//Person(name); //对于构造函数,是不可以这么调用的
}
void speak()
{
System.out.println("name = "+this.name+","+"age = "+this.age);
}
public boolean compare(Person p)
{
return this.age==p.age;
}
}
class PersonDemo
{
public static void main(String[] args)
{
Person p = new Person(20);
Person p1 = new Person(25);
boolean b = p.compare(p1);
System.out.println(b);
}
}