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