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

时间:2015-03-19 13:19:37

标签: java

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

4 个答案:

答案 0 :(得分:13)

  

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

如果您是Java的新手并且第一次尝试掌握这个概念,那么您可以构造函数视为工厂方法。 (就像在Python中一样,构造函数只是一个名为__init__的方法。)然而,你应该继续前进并理解存在许多差异。仅举几例:

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

答案 1 :(得分:3)

直接来自JLS (Chapter 8)

  

构造函数用于创建作为类实例的对象(第12.5节,第15.9节)。   ConstructorDeclarator中的SimpleTypeName必须是包含构造函数声明的类的简单名称;否则会发生编译时错误。

     

在所有其他方面,构造函数声明看起来就像没有结果的方法声明(§8.4.5)。

     

构造函数声明不是成员。它们永远不会被遗传,因此不会被隐藏或覆盖。

答案 2 :(得分:2)

Java中的构造函数

在创建对象时调用Java构造函数。它构造值,即为对象提供数据,这就是它被称为构造函数的原因。 构造函数实际上返回当前的类实例(您不能使用返回类型,但它返回一个值)。 基本上为构造函数定义了两个规则。

1)构造函数名称必须与其类名相同 2)构造函数必须没有明确的返回类型

构造函数的类型

1)默认构造函数(no-arg构造函数)

class Bike1{  
Bike1(){System.out.println("Bike is created");}  
public static void main(String args[]){  
Bike1 b=new Bike1();  
}  
}  

2)参数化构造函数

class Student4{  
int id;  
String name;  

Student4(int i,String n){  
id = i;  
name = n;  
}  
void display(){System.out.println(id+" "+name);}  

public static void main(String args[]){  
Student4 s1 = new Student4(111,"Karan");  
Student4 s2 = new Student4(222,"Aryan");  
s1.display();  
s2.display();  

}
   }

答案 3 :(得分:0)

constructor用于初始化变量,它不是方法。但是,您可以选择创建构造函数,如果不这样,JVM将创建默认的constructor