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

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

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

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

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

我们来看例子:

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();
	}
}

结果:

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

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

时间: 2024-11-12 04:08:36

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

[javase学习笔记]-7.5 构造函数须要注意的几个细节

这一节我们简单的说几个在使用构造函数时须要注意的细节. 通过我们前几节的学习,我们对构造函数有了一个比較清楚的认识,当我们在创建对象时.我们会调用构造函数.那么我们在定义和调用构造函数时.须要注意哪些细节呢? 第一个须要注意的细节:构造函数与set方法 看两个函数代码: class Person { private String name; private int age; //构造函数,初始化name Person(String n) { name = n; System.out.printl

[javase学习笔记]-7.5 构造函数需要注意的几个细节

这一节我们简单的说几个在使用构造函数时需要注意的细节. 通过我们前几节的学习,我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会调用构造函数.那么我们在定义和调用构造函数时,需要注意哪些细节呢? 第一个需要注意的细节:构造函数与set方法 看两个函数代码: class Person { private String name; private int age; //构造函数,初始化name Person(String n) { name = n; System.out.printl

[javase学习笔记]-7.4 构造函数的内存加载

这一节我们来说说构造函数在内存中是如何被加载的. 我们之前说过,构造函数只有创建对象时才会被调用并且只调用一次.那么在创建对象的过程中内存中的变化是什么样的呢? 我们接着上一节的Person类,我们分析 class Person { private String name; private int age; Person()//构造函数,分别为成员变量name和age赋固定的值 { name = "baby"; age = 1; System.out.println("per

[javase学习笔记]-7.2 构造函数与一般函数的区别

这一节我们简单学习一下构造函数与一般函数之间的区别所在. 那么它们有什么区别呢,结合上一节,我们可以总结出以下两点区别: 第一个区别: 构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化. 一般函数:对象创建后,需要函数功能时,才调用函数. 这也就是说创建对象时,构造函数一定被调用,而一般函数不一定被调用. 第二个区别: 构造函数:对象创建时,会调用且只调用一次. 一般函数:对象创建后,可以被调用多次. 简单看看示例: class Person { private String

javasE学习笔记:关键字super的使用

/* super 的作用: 1 . super可以在子类中引用父类的成员,通过 .的方式和属性.this相对应. 2. 在子类的构造方法中可以可使用super(参数列表)语句调用父类的构造方法 3. 注意: 子类的构造方法中一定要调用父类的构造方法.... */ javasE学习笔记:关键字super的使用,布布扣,bubuko.com

Spring学习笔记--initmethod和构造函数、setter方法的加载顺序

今天学习了一下spring中bean的初始化和销毁,突然想了解一下初始化方法跟构造函数及setter方法注入的执行顺序,记录在此,仅作为学习笔记. 当实例化一个bean时,可能需要执行一些初始化操作来确保该bean处于可用状态.同样地,当不再需要bean时,将其从容器中移除是,我们可以还需要按顺序 执行一些清除工作. package com.zp.chapter2; public class Auditorium { private String name; public void doBefo

C++学习笔记22,普通函数重载(1)

转载请注明出处:http://blog.csdn.net/qq844352155/article/details/31353325 该博文仅用于交流学习,请慎用于任何商业用途,本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 什么是方法重载? 方法重载也可以说是函数重载,函数的多态性. 具体来说就是将函数或者方法的名称用于多个函数,但是参数的类型或者参数的数目不同. 在这篇blog里面我只讨论类外函数的重载. 例如一个简单的例子: #in

C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)

在构造体内初始化数据成员是最常见的方法. 例如: #include <iostream> using namespace std; class A { private: int i; string s; public: A(int ii,string ss){ //在构造函数体内初始化数据成员 i=ii; s=ss; cout<<"ctor:i="<<i<<",s="<<s<<endl; } /

初探C++运算符重载学习笔记&lt;3&gt; 增量减量运算符重载

初探C++运算符重载学习笔记<1> 初探C++运算符重载学习笔记<2> 重载为友元函数     增量.减量运算符++(--)分别有两种形式:前自增++i(自减--i),后自增i++(自减i--) 因此当我们重载该运算符时,要重载相应形式的运算符. T & operator ++() // 前自增++i T & operator ++(int) //后自增 i++ 举例: #include <iostream> using namespace std; c