我们可以说构造函数是Java中的方法吗?

kem*_*565 -4 java

我们知道Java是一种面向对象的语言.一切都是Java中的对象.我们也知道对象有一些东西(实例变量/字段)和做某事(方法).我们使用方法更改实例变量的状态是安全的,即; 二传手和吸气鬼.所以在构造函数中我们初始化实例变量.换句话说,构造函数正在为对象做一些事情.因此,假设构造函数是一种实用方法,就像设置值的setter一样,这是不正确的?区别在于setter甚至我们有返回类型void,在构造函数中我们没有任何返回类型.并且可以在对象上调用setter任意次数,但可以在对象的生命周期中调用构造函数一次.

aio*_*obe 13

我们可以说Contructors是Java中的方法吗?

如果你是新来的Java,并试图把握第一时间的概念,你可以认为构造函数的工厂方法.(比如在Python中,例如构造函数只是一个方法__init__.)然而,你应该继续前进并理解存在许多差异.仅举几例:

  • 构造函数没有返回类型.
  • 在初始化最终成员变量时,它有特殊的义务(一种方法甚至不能分配给最终成员).
  • 它是静态的,你可以在没有被调用者的情况下调用它,但在你有this引用的意义上它是非静态的.
  • 它使用特殊关键字调用new,并且具有特殊的字节码invokespecial,而实例方法obj.method()通常通过编码调用字节码来调用invokevirtual.
  • 必须调用超级构造函数,除非在超类中有一个无参数构造函数.
  • 它们永远不会被继承,也不能被覆盖.