/**************************************************
* Time:2016年11月15日11:38:27
* Purpose:构造函数
* Author:ZJY
* Summary:构造函数不属于一般函数,会在类生成对象时被自动执行
* KnowledgePoint:1.构造函数不能有返回值(void也不能有)
2.构造函数不需要调用但只会在类生成对象时被自动执行
3.java在构造一个类时,如果用户没有定义构造函数,则
会自动生成一个无参的构造函数; 但用户如果定义了构造
函数则就不会自动生成构造函数
4.当创建类对象时,有且只有一个构造函数被调用(有参或者无参的)
***************************************************/
class A
{
private int i;
private int j;
public void show()
{
System.out.printf("i = %d,j = %d", i,j);
}
public void set(int a, int b)
{
i = a;
j = b;
}
public A()
{
}
//构造函数:要求构造函数名要与类名相同;构造函数不能有返回值
//构造函数不属于一般的函数,它不需要被调用就会执行,
//但只在创建类A的对象时被调用
public A(int a, int b)
{
i = a;
j = b;
System.out.printf("无参构造函数被调用了!\n");
}
}
public class TestConst_1
{
public static void main(String[] args)
{
A aa = new A(6, 7); //当new出类A的对象时会自动
//把参数6,7发给类中的有参的构造函数(系统会自动识别有几个参数)
A aa = new A(); //会自动识别发送给无参的构造函数
//aa.i = 1;
//aa.j = 2;
//aa.set(3, 4);
aa.show();
}
}
/**************************************************
* Time:2016年11月15日13:10:56
* Purpose:构造函数2
* Author:ZJY
* Summary:在java中当一个对象被创建时,会对类对象中的各个成员进行初始化
* KnowledgePoint:
1.如果是数值型的数据类型(int double float byte...)都会被赋值为0
2.如果是boolean型的数据会被赋值为false
3.如果是引用(引用实际就是受限指针)会被赋值为null
4.系统会先执行初始化时成员的初值,再执行构造函数中赋的值
5.在java中所有的局部变量都要求手动初始化; 类属性可以不初始化,
因为它不属于局部变量,类属性会自动初始化
***************************************************/
class ConstFunction
{
public int i; //i不是局部变量是一个类是属性
ConstFunction bb;
public boolean flag;
public ConstFunction(int i, boolean flag, ConstFunction bb)
{
this.i = i;
this.flag = flag;
this.bb = bb;
}
public ConstFunction()
{
}
public void show()
{
System.out.printf("[show] i = %d\n", i);
System.out.printf("flag = %b\n", flag); //boolean型输出用%b或%B
System.out.println("bb = " + bb + 'H');
}
}
class TestConst_2
{
public static void main(String[] args)
{
ConstFunction aa1 = new ConstFunction();
aa1.show(); //ok
ConstFunction aa2 = new ConstFunction(88, true, aa1);
aa2.show(); //ok
//int k; //k是局部变量,如果没有初始化是一个随机值
//在java中要求所有的局部变量都需要被初始化
//System.out.printf("k = %d\n", k); //error
}
}