码迷,mamicode.com
首页 > 编程语言 > 详细

[javase学习笔记]-7.3 构造函数的重载

时间:2015-12-23 13:01:52      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

这一节我们来学习一下构造函数的重载。

说到重载,我们在函数那一章已经学习过了,为了更好的理解构造函数的重载,我们先要弄明白一个问题:

那就是什么时候定义构造函数呢?

在描述事物时,该事物已存在就具备一些内容,这些内容都定义在构造函数中。

我们来看例子:

class Person
{
	private String name;
	private int age;

	Person()
	{
		System.out.println("person run");
	}

	public void speak()
	{
		System.out.println(name+":"+age);
	}
}
我们来测试一下:

class ConsDemo
{
	public static void main(String[] args) 
	{
		Person p = new Person();//此时调用了构造函数
		p.speak();
	}
}

结果:

技术分享

此时打印结果为null和0,就是说我们从来没有对成员变量赋过值。

那么当我们想要在创建Person对象时成员变量就有值,可以定义这样的构造函数:

class Person
{
	private String name;
	private int age;

	Person()//构造函数,分别为成员变量name和age赋值
	{
		name = "baby";
		age = 1;
		System.out.println("person run");
	}

	public void speak()
	{
		System.out.println(name+":"+age);
	}
}
测试

class ConsDemo
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.speak();
	}
}
我们看到结果:

技术分享

那么如果我们要使一个Person对象一出生就有名字,那么我们可以定义如下一个构造函数:

class Person
{
	private String name;
	private int age;

	Person()//构造函数,分别为成员变量name和age赋固定的值
	{
		name = "baby";
		age = 1;
		System.out.println("person run");
	}

	Person(String n)//构造函数,有一个初始name参数
	{
		name = n;
	}

	public void speak()
	{
		System.out.println(name+":"+age);
	}
}

我们来测试一下:

class ConsDemo
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.speak();
		Person p1 = new Person("旺财");
		p1.speak();
	}
}

看一下结果:

技术分享

同理,我们可以定义另外一个构造函数,把name和age两个参数同时初始化

class Person
{
	private String name;
	private int age;

	Person()//构造函数,分别为成员变量name和age赋固定的值
	{
		name = "baby";
		age = 1;
		System.out.println("person run");
	}

	Person(String n)//构造函数,有一个初始name参数
	{
		name = n;
	}

	Person(String n,int a)
	{
		name = n;
		age = a;
	}

	public void speak()
	{
		System.out.println(name+":"+age);
	}
}
测试:

class ConsDemo
{
	public static void main(String[] args) 
	{
		Person p = new Person();
		p.speak();
		Person p1 = new Person("旺财");
		p1.speak();
		Person p2 = new Person("小强",10);
		p2.speak();
	}
}
结果:

技术分享

从上面我们看到,一个类中我们定义了多个构造函数,它们的参数各不相同,这种现象就是构造函数的重载。

通过构造函数的重载,我们可以通过不同的构造函数初始化不同的对象。

[javase学习笔记]-7.3 构造函数的重载

标签:

原文地址:http://blog.csdn.net/fbl_csdn/article/details/50385571

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!