【第四课】面向对象编程---构造函数

/**************************************************
 * 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
		
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值