空的构造函数和没有构造函数有什么区别
我从PHP
移动到Java
因为英文不是我的主要语言,所以很难理解OOP。我想要一个简单的答案(尽可能简单,哈哈)。最新的区别:在第二空的构造函数和没有构造函数有什么区别
class Munikas {
public Munikas(){
}
public void rytas(){
System.out.println("Labas Rytas");
}
public static void main(String[] args){
Munikas labas = new Munikas();
labas.rytas();
}
}
而且
class Munikas {
public void rytas(){
System.out.println("Labas rytas");
}
public static void main(String[] args){
Munikas labas = new Munikas();
labas.rytas();
}
}
我不使用constructor
。将来如何影响我的代码?
您提供的代码片段之间没有区别。用户提供的无参数构造函数基本上与缺省情况下由Java提供的默认无参数构造函数相同。
如果你在那个没有参数的构造函数中做了什么,然后会有区别,但是作为创作,这两个代码示例是等价的。
Java Language Specification为此提供了更多的上下文,其代码示例与您自己的代码示例类似。
没有区别。当你的类没有定义任何构造函数时(如你的第二个代码片段),编译器会自动插入一个空参数的构造函数,所以第二个片段等同于第一个片段。
您不必使用空的构造函数。编译器会自动生成它。
java中的类具有在后台创建的默认构造函数。在第一个中添加了构造函数。第二个,java编译器将创建一个空的默认构造函数。
更多的信息在这里:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
希望这有助于:)
简单地说,在构造函数允许你创建类的实例对象,使用这样的事情:
Munikas testObject = new Munikas();
当您尝试使用非静态方法时,两者之间的区别将很明显。该方法来自Rytas()是非静态的,这意味着你需要调用它使用类的一个实例化的对象,像这样:
testObject.rytas();
所以使用来自Rytas时,你将需要使用一个构造函数。正如其他人所提到的,你不需要添加代码来创建空的构造函数,但是有时候你需要为具有参数的对象使用构造函数。主要的STATIC方法无论有没有构造函数都可以,只能使用类(Munikas)本身调用。有关更多信息,请检查this。希望有所帮助。
的Java构造是当一个对象被使用new
关键字实例化被称为特殊的方法为:
ClassName referenceName = new ClassName();
默认构造:
public ClassName(){ // no statements }
类中的构造函数不是必须是。如果没有在类中定义构造函数,然后JVM添加默认之一。
在第一码:
您已经定义了没有任何语句,以便它什么都不做的默认构造函数。这就像不定义构造函数。
在第二码:
JVM自动定义默认构造函数一样在你的第一个代码。所以,不会有任何不添加构造函数的影响。
所以我需要自己构建构造函数只有当我需要使用它的参数? –
@TomasVilemaitis:通常这就是构造函数的用例,尽管如果你真的想使用构造函数来建立一些默认状态。 – Makoto
@TomasVilemaitis没有。只有当你在构造函数中做某些事情。可以有一个没有参数的构造函数来设置一些字段。 –