读书笔记之构造器与重载

用构造器初始化

在创建对象的时候,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证了初始化的进行。Java中构造器采用与类相同的名称。

构造器其实是一种特殊的方法,因为它没有返回值。这个与返回值为空(NULL)是不一样的。

下面以练习2为例,来说明构造器的初始化。

public class E02 {
	String s1 = "HelloWorld";
	String s2;
	public E02(String s2i){
		s2 = s2i;
	}
	public static void main(String args[]){
		E02 si = new E02("HelloWorld");
		System.out.println("si.s1 = " + si.s1);
		System.out.println("si.s1 = " + si.s2);		
	}
}

运行结构如下:

关于默认构造器

如果我们写的类中没有构造器,编译器会自动帮助我们构造一个默认的构造器。

class Dog{}

public class Constructor {
	public static void main(String[] args){
		Dog dog = new Dog();
		System.out.print(dog);
	}
}

运行结果如下:

Test.Dog@1db9742

如果已经定义了一个构造器,无论是否有参数,编译器就不会自动创建默认构造器了。而且会报错!如下图!


方法重载

所谓方法的重载就是让方法名相同而形参名不同或者形参的个数、顺序不同,说白了就是每个重载的方法都必须有一个独一无二的参数类型列表。示例如下:

class Dog{
	void shout(int i){
		System.out.println("barking!");
	}
	void shout(double j){
		System.out.println("howling!");
	}
	void shout(int i,double j){
		System.out.println("shit!");
	}
	void shout(double i,int j){
		System.out.println("shitshitshit!");
	}
}

public class Constructor {
	public static void main(String[] args){
		Dog dog = new Dog();
		dog.shout(1.0);
		dog.shout(1);
		dog.shout(1, 1.0);
		dog.shout(1.0, 1);
	}
}
 

运行结果如下:


注意,我们是不能以方法的返回值的不同来区分方法的!具体可以看《Java编程思想》Page82。

方法和构造器的区分主要有一下两点:

1、方法是有返回值的,即使为void,而构造器没有。

2、构造器的名字是和类名一样的,方法名我们一般不与类名命名成一样,不过即使命名成一样,也是可以的。但是对于新手来说,是个明显的提示。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值