在Java中结构化的方法是一种特殊的方法。新手如果我想说完,恐怕不可能。

我就说说我自己的理解吧,抛砖引玉,有遗漏或错误的请大家指正!

构造方法一般说法是用来对new出来的对象进行初始化的,也是类的方法,不过他比较特殊。为什么用构造函数,我举个例子说下

有没有发现,我每new个新对象都要给他赋值,麻烦不说,指不定什么时候忘了呢。而且,如果把变量设成private,我还不能访问。下面在用构造方法走一个:

用构造方法就不一样,我只要在new新对象的时候传两参数,它自动就把变量赋值了,也有利于类的封装,我这里的两个变量可都是private哦!

它有几个特征:

1、方法名和类名必须是一样的;

2、构造方法没有返回值;

3、在new一个新对象时,构造函数自动执行;

举例说明,Dog类中我建了三个方法,在主函数中new出dog时,没有调用任何方法,但是第一个Dog()函数执行了。是不是实例对象时自动执行的啊!那么第二个函数为什么没有执行呢,因为它带了返回值。系统自动把他归类到普通方法里去了,要执行它必须向普通方法一样调用。(这里说下void,很多教材说它指没有返回值。但void的没有返回值和构造方法的是不一样的,我一般把void理解为该方法不需要返回值,而构造方法是没有返回值。)

4、一个类可以有多个构造方法;

说是多个,主要体现在所传参数上,两个完全一模一样的是不允许的。

两个构造方法,参数不一样,new新对象时,系统会根据你传的参数选择调用哪个方法。当然你在new新对象是传参数就不能乱传了,必须和某个构造方法中的类型、数量一致。

5、每个函数都有一个默认的构造方法;

这个就不知道怎么演示了,上两张截图,大家对比下:

new对象是出错了,因为和构造方法参数不一样嘛!

我把自己写的构造方法删了,反而通过了。一般认为,你写了自己的构造方法,会覆盖掉默认的所以第一个通不过,删掉自己的,系统调用默认的,第二个通过了!

构造方法的优先级是很高的,一旦创建对象,就会立刻执行。但是昨天补充的那个static代码块比它的优先级还高,还在它之前执行,这里就不演示了。

构造方法既然还是方法,就还是可以用访问控制修饰符来修饰的,我一般都用public的。另外如果用private修饰的话,在类外部创建对象时不能初始化,只能由类的内部实例化,形成单例模式。这个比较少见,我没见过,就不说了!

相关推荐