构造函数
2015-11-29 19:00
417 查看
构造函数的概述: 特点: 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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python动态类型的学习---引用的理解
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树