黑马程序员技术交流社区
标题:
java 类的构造函数的知识笔记
[打印本页]
作者:
fmi110
时间:
2015-6-30 23:23
标题:
java 类的构造函数的知识笔记
构造函数的知识笔记
/*构造函数
对象已建立就会调用与之对应的构造函数
作用:可用于初始化对象
当一个类中未定义构造函数时,系统会默认给该类构建一个空参数的构造函数;
当自定义构造函数后,系统不再定义空参数的构造函数
*/
class PersonDemo2
{
public static void main(String[] args)
{
System.out.println("Hello World!");
// Person p1 = new Person();
// p1.setName("lisan");
// p1.getName();
Person p2 = new Person("Lili");
p2.setName("fmi");
p2.getName();
// Person p3 = new Person("Lilei",12);
}
}
class Person
{
private String name;
private int age;
/*定义构造函数,函数名与类名必须一致*/
Person()
{
System.out.println("A:系统默认的构造函数,无参数");
}
/*
this :代表本类的对象,到底代表哪一个?
this代表它所在函数所属对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象
应用:当定义类中的功能时,该函数内部要调用到该函数的对象时,就用this来表示此对象
*/
Person(String name)
{
// name = name ; //注意变量作用域 类成员被 函数参数覆盖 导致赋值失败
this.name = name;
// System.out.println("B:Name = "+name);
}
Person(String name,int n)
{
// this.name = name;
// Person(name); // 错误,构造函数间不能直接调用,可通过this 解决,this语句必须放在函数第一行
//因为初始化语句应该先执行,避免赋值语句赋值后被覆盖
this(name); //this 关键字用于构造函数构造
age = n;
System.out.println("C:Name = "+name +"," + "age = " + age);
}
/*构造代码块:对象一建立就运行,运行顺序: 构造代码块 --> 构造函数
作用:给所有对象进行初始化,而构造函数则通过函数重载
方式调用,不同对象可能调用不同的构造函数
{
System.out.println("这是代码块起始位置:");
age = 2;
System.out.println("代码块赋值age = "+age);
}
*/
public void setName(String name)
{
this.name = name; //参数名与类成员名一样时,通过this关键指定
//name = name;
// name = "name改变了,没加this";
// System.out.println("name = "+name);
// System.out.println("调用函数赋值名字");
}
public String getName()
{
// System.out.println("调用函数输出名字:"+name);
return this.name;
}
}
复制代码
作者:
fmi110
时间:
2015-6-30 23:24
创建一个对象,其实是通过调用构造函数来创建对象的????????
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2