浅谈java中的构造器

来源:互联网 发布:优化人才培养方案 编辑:程序博客网 时间:2024/06/07 00:16
浅谈对构造器的一些理解
首先,我们得理解什么是构造器?在java中每一个类被创建以后都会创建出属于它自己的构造器,而构造器担负的作用则是在我们创建实例对象的时候,对对象的成员变量(或者说对象的属性)进行一个初始化(也可以理解为赋一个初值)。这就是构造器的作用。
PS:也许有人会说构造器还可以做除赋值以外的事,当然这是可以的,但是我想这样的话也就违背了构造器的初衷即初始化对象属性。所以术业有专攻,不是构造器应该做的事还是不要放在构造器里了,交给那些方法吧。
谈完了构造器是什么,构造器是用来做什么的,这时候我们在谈谈使用构造器的时候要注意的一些事。
当我们不对类进行创建构造函数的时候,系统会默认给我们的类创建一个无参数的构造器。但是一旦我们设置了构造器(不管是有无参数类型的),系统都不再会给类自动创建构造函数了。这就牵扯到一个问题。当子类继承于父类的时候,子类中的构造器如果没有指定super父类中哪种构造函数,这时候如果父类中只定义了有参的构造函数,这时候程序会报错。因为当子类没有super父类中哪种构造函数的时候,系统会自动默认子类super父类中的无参构造函数,但是父类中没有无参构造函数的存在(因为父类只定义了有参构造函数,而且因为已经创建了构造函数,故系统不会再自动给父类配置一个无参构造器),因为系统就会报错。这也就给我们提个醒,如果我们定义的类不是final类,那么我们最好把它的有参和无参的构造函数都创建上,这样也防止此类情况发生,也同时让程序的弹性比较好。
还有一个问题,再创建构造函数的时候,如果你重载多个构造函数的时候,你发现你的构造函数有重复代码的现象的时候(重复代码是我们一定要避免的事情),可以灵活使用this()。this的含义是调用另外一个构造函数,这样就避免了代码的重复。
对于final关键字,如果一些成员变量被final修饰了,并且在定义的时候也没有明确使用=进行赋值,则是表示对这个变量的值进行延迟指定。而这时候构造器函数中是一定要有对这个变量进行赋值的动作,否则编译会出错。
以上是本人对构造器的一些小小理解,如果有错的地方,欢迎指出,希望共同进步!
1 0