《Head First Java》20200926读书笔记

P242-

《Head First Java》20200926读书笔记

构造新的Duck

构造Duck
构造函数的一项关键特征,是它会在对象能够被赋值给引用之前就执行。
这代表你可以有机会在对象被使用之前介入。
也就是说,在任何人取得对象的遥控器前,对象有机会对构造过程给予协助。
在Duck的构造函数中,我们没有作出什么有意义的事情,但还是有展示出事件的顺序。
构造函数让你有机会可以介入new的过程

public class Duck{
	public Duck(){
		System.out.println("Quack");//列出一行呱叫
	}
}

public class UseADuck{
	public static void main(String[] args){
		Duck d = new Duck();//这样会启动Duck的构造函数
	}
}

新建Duck状态的初始化

大部分的人都是使用构造函数来初始化对象的状态。
也就是说,设置和给对象的实例变量赋值。

public Duck(){
	size = 34;
}

可以使用该类的setSize()来设定大小。
但这会让Duck暂时处于没有大小数值的状态(实例变量没有默认值),且需要两行才能搞定。

public class Duck{
	int size;//实例变量	

	public Duck(){
		System.out.println("Quack");
	}

	public void setSize(int newSize){
		size = newSize;
	}
}


public class UseDuck{
	public static void main(String[] args){
		Duck d = new Duck();
		//问题出在这里,Duck在此处已经建立。
		//但是却没有size值!你必须依赖Duck的用户记得设定大小。

问:既然编译器会帮你写,那为何还要自己写构造函数?
答:如果你在创建对象时,需要有程序代码帮忙初始化,那你就得自己编写构造函数。例如你说你需要通过用户的输入来完成对象的创建。另外一个原因与父类的构造函数有关。

问:如何分辨构造函数和方法?
答:Java可以有与类同名的方法而不会变成构造函数。其中的差别在于是否有返回类型。构造函数不会有返回类型。

对象状态初始化

使用构造函数来初始化Duck的状态
如果某种对象不应该在状态被初始化之前就使用,就别让任何人能够在没有初始化的情况下取得该种对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值