A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭盼 中级黑马   /  2012-2-28 21:40  /  1824 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一次接触构造函数,感觉有点难理解,到底构造函数和普通的函数有什么本质的区别,老师在视频中讲,构造函数是一多重重载形式存在的,这又是什么意思

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 就是要把遇到的问题提出来

查看全部评分

5 个回复

正序浏览
多个构造函数肯定是以重载形式存在,因为 都是函数名相同(与类同名) 参数列表不同  没有返回类型void:注意不是没有返回值
回复 使用道具 举报
从类的角度理解:构造函数是 类加载的默认条件,也就是说 你如果没定义构造函数时,系统 会给你默认加入一个空参数的构造函数。参数为 null或 0
因为类被加载,就要在堆内存中开辟一片空间,该内存中的属性必须得进行初始化值

从对象的角度看: 构造函数是给对象初始化,是在对象一建立就运行, 而一般函数(功能)是对象调用它,它才给对象添加它所具备的功能。
构造函数一般定义对象的特性,构造代码块定义对象的共性
回复 使用道具 举报
在创建对象的过程中调用的方法。
            1:构造器没有返回类型。
            2:构造器的名字与类名相同。
                    格式为:[ 修饰符 ]  类名( 参数列表 ){  },修饰符可以是private、 protected、 default、private
                   在一个对象的生成周期中构造器只用一次,由系统自动调用,不允许手工调用。

            程序员没有提供一个构造器,系统会自动提供一个无参的构造器。
             在构造函数执行的时候,可以使用this,所以说在执行构造函数的时候,类对象已经存在了,更说明类对象不是构造函数创建的,
            3:获得对象的方式:
                通过new(在堆空间中申请分配空间),new 类名(),可以通过这种形式或的一个对象,这时的对象是无法使用,必须把他的地址存放进一个对象变量才能够使用。
                例如 :
                    Car c=new Car();
             注意:    new操作符有2个主要工作,首先根据String类的定义,在堆中为其分配内存,然后调用String类的构造函数。
            
               
回复 使用道具 举报
Java里面static一般用来修饰成员变量或函数。但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以。被static修饰的内部类可以直接作为一个普通类来使用,而不需实例一个外部类
1.public class OuterClass {  
2.    public static class InnerClass{  
3.        InnerClass(){  
4.            System.out.println("============= 我是一个内部类'InnerClass' =============");  
5.        }  
6.    }  
7.}  
回复 使用道具 举报
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。

java 构造函数的执行过程

类初始化时构造函数调用顺序:
  (1)初始化对象的存储空间为零或null值;
  (2)调用父类构造函数;
  (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马