您的位置:首页 > 编程语言 > Java开发

构造函数

2015-11-29 19:00 387 查看
构造函数的概述:
特点:
1:函数名与类名相同
2:不用定义返回值类型
3:没有具体的返回值
作用:
给对象进行初始化。
注意:
1:默认构造函数的特点
2:多个构造函数是以重载的形式存在的是


public class Person{
private int age;
private String name;

//定义一个Person类的构造函数
Person(){//构造函数,而且是空参数的。
name="baby";
age=1;
System.out.println("Person...run");

}

//如果孩子一出生就有名字
Person(String name){
name=name;
}
}

class  ConsDemo{
Person  p=new Person();//使用了,空参数的构造函数。

Person  p1=new Person("张三");//p1这个对象一创建出来,就定义了,名字为"张三"的人。

}


构造函数:构建创造对象时调用的函数。作用:可以给对象进行初始化
创建对象都必须要通过构造函数初始化。

一个类中如果没有定义过构造函数,那么该类中会有一个默认的空参数的构造函数
如果在类中定义了指定的构造函数,那么类中的默认构造函数就没有啦。


一般函数和构造函数有什么区别呢?

构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化
一般函数:对象创建后,需要函数功能时才调用

构造函数:对象创建时,会调用只调用一次
一般函数:对象创建后,可以被调用多次

什么时候定义构造函数呢?
在描述事物时,该事物已存在就具备的一些内容,这些内容都定义在构造函数中


构造函数之重载

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

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

构造函数可以有多个,用于对不同的对象进行针对性的初始化。
多个构造函数在类中是以重载的形式来体现的。

重载,函数名相同,参数列表不同


class  Person{
int age;
String name;
//定义一个Person类的构造函数
Person(){ //构造函数,而且是空参数的
}

Person(String name){//构造函数,有一个字符串类型参数传递
name=name;
}

Person(int age;String name){//构造函数,有一个int类型和String类型的参数传递
age=age;
name=name;
}

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

public static void main(String[] args){
Person  p=new Person();

}
}


构造函数在内存中的变化

class Demo{
public static void main(String[] args){
Person p=new Person(10,"小强");
p.speak();
}
}


上面这句代码

首先main函数进栈,然后,在堆中,产生地址,里面name,age会默认初始化null,0,
然后,在栈中Person这个构造函数就会进栈,传递2个参数进来,分别是小强,10,
然后,就在栈中找name ,age两个定义变量,找不到就去堆中找,找到啦,就赋值上去。
然后Person这个构造函数,就出栈。然后speak就进栈,打印完之后,也就出栈啦内存中的变化。


构造函数的细节

class Demo{

private String name;
private int  age;
//void Six1(){}这是一个一般函数,只是方法名和类名一样

Six1(){
name="baby";
age=1;
System.out.println("Person run");
}

Six1(String n){
name=n;
}
Six1(String n,int a){
name=n;
age=a;
}
public void setName(String n){
name=n;
}
/*
构造函数和setName方法不冲突,因为,一个
是用来初始化,另外一个是用来重新赋值

构造函数可以调用一般函数。

一般函数调用构造函数,就需要new 一个对象出来
这样做很多余

在类中写了构造函数那么,默认的构造函数
就没有啦

构造函数中有return
* */

public  void speak(){
System.out.println(name+":"+age);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 函数 对象