当前位置:网站首页 > 技术博客 > 正文

构造器的用法



构造方法的定义:

构造方法也叫构造器或者构造函数

构造方法与类名相同,没有返回值,连void都不能写

构造方法可以重载(重载:方法名称相同,参数列表不同)

如果一个类中没有构造方法,那么编译器会为类加上一个默认的构造方法。

默认构造方法格式如下:

public 类名() {

}

如果手动添加了构造器,那么默认构造器就会消失。

建议代码中将无参构造器写出来。

 
  

构造方法的作用:

构造方法在创建对象时调用,具体调用哪一个由参数决定。

构造方法的作用是为正在创建的对象的成员变量赋初值。

 
  

构造方法种this的使用:

构造方法种可以使用this,表示刚刚创建的对象

构造方法种this可用于

this访问对象属性

this访问实例方法

this在构造方法中调用重载的其他构造方法(要避免陷入死循环)

只能位于第一行

不会触发新对象的创建

 
  

归纳this在实例方法和构造方法种的作用

this是java多态的体现之一

this只可以在构造方法和实例方法种存在,不能出现在static修饰的方法或代码块中

this在构造方法中表示刚刚创建的对象

this在实例方法种表示调用改方法的对象

this可以在实例方法和构造方法中访问对象属性和实例方法

this有时可以省略

this可以在实例方法中作为返回值

this可以当作实参

this可调用重载的构造方法


例:

 
   

例1:

Demo demo = new Demo(); //这里是调用的是一个无参的构造方法,必须声明在方法中,最好声明在主方法

上面构造方法的参数根据实际添加实参,jvm根据构造方法的参数不同加载不同的构造方法;

例2:

 
   

例3:

 
   

注意:例2和例3中this或super调用构造方法只能出现在构造方法中,而且必须出现在第一行,所以一个构造方法中第一行只能为this或super调用构造方法,两者不能同时调用构造方法出现,而且注意this或super调用构造方法时,要留构造方法出口,意思就是最后调用的构造方法中没有再调用别的构造方法!

3.创建子类对象会调用父类构造方法但不会创建父类对象,只是调用父类构造方法初始化父类成员属性;

我总是要把构造器和方法混淆,后来发现,

方法,实际上,是需要用于执行java代码的,而构造器,

构造器,,,是一个类的实例!!

为什么呢?

类的实例,我们需要用类来创建对象,进而访问其属性,因为实例是需要被用来调用的,但是调用的话,我们不得不去考虑一个问题,就是对象,最终是被存储在内存里面的,而存储的时候,我们的内存不得不需要给他再另外开辟新的内存空间,那么,java是如何给这种我们所需要的类来开辟内存空间的呢?这就涉及到了java的内存机制,就是说,我们必须要给这个类制作一个构造器,而且这个构造器的名称必须和这个类的名称是一致的,这样,我们的java编译器才能识别这个类,进而给这个类在内存中开辟内存空间,也就是我们所说的,我们手动,人为的给他进行“初始化”,事例如下:

 
   

这样,当我们在对Rock类进行调用的时候,我们的java编译器就会事先对他进行“自动”地初始化,开辟内存空间

那么现在问题又来了,举个例子,我们的Rock()方法需要带有一个参数,形参,但是整个代码中,需要不仅仅是带有形参的Rock();还需要不带形参的Rock(),在我们的构造器对类进行构造的时候,需要将功能类似的,但形参不同的方法同时打包在该类下,以便在我们调用某个方法的时候,直接重载构造器中的该方法,可以说,这种构造形式,满足了我们对功能类似,形参不同的方法,调用的时候,进行重载,而满足了编译器自动初始化,人不需要手动初始化的需求。

而且有个,问题,本来两个方法,功能上是类似的,一棵树和一株树苗,你非得要给他们起不同的名字,多别扭,好在有了构造器,能够是功能相似的方法起相同的名字,不同的参数,而能够在被调用的时候得以重载,多么牛逼的构造器 啊

版权声明


相关文章:

  • 静态嵌套类和内部类的区别2025-09-23 19:01:02
  • csrf攻击常见两种方法2025-09-23 19:01:02
  • c keyvaluepair2025-09-23 19:01:02
  • 乐高ev3编程软件是什么2025-09-23 19:01:02
  • c=copy.copy(a)2025-09-23 19:01:02
  • sql简单编程2025-09-23 19:01:02
  • 接口设计6大原则2025-09-23 19:01:02
  • 调试助手全局接口地址2025-09-23 19:01:02
  • js 数组对象去重2025-09-23 19:01:02
  • 驼峰式命名什么意思2025-09-23 19:01:02