Java 为什么在创建构造函数之前不初始化实例变量。如果它们在类加载时初始化,会发生什么
正如我们所知,构造函数的目的是初始化实例变量,如果它们是在自身之前初始化的,那会影响代码吗 例如,您可以有更多的构造函数。如果您在线初始化一个字段,它将始终带有一个值 如果你在一个构造器中这样做,也许你可以决定不需要在另一个构造器中 一般来说,内联init位于构造函数之前,因此构造函数可以覆盖它,例如在java中:Java 为什么在创建构造函数之前不初始化实例变量。如果它们在类加载时初始化,会发生什么,java,c#,Java,C#,正如我们所知,构造函数的目的是初始化实例变量,如果它们是在自身之前初始化的,那会影响代码吗 例如,您可以有更多的构造函数。如果您在线初始化一个字段,它将始终带有一个值 如果你在一个构造器中这样做,也许你可以决定不需要在另一个构造器中 一般来说,内联init位于构造函数之前,因此构造函数可以覆盖它,例如在java中: package test; public class Test { private String field1 = "INLINE"; public Test(
package test;
public class Test {
private String field1 = "INLINE";
public Test() {
System.out.println( "field1 value "+this.field1 );
this.field1 = "CONSTRUCTOR";
}
public String getField1() {
return field1;
}
public static void main( String[] args ) {
Test t = new Test();
System.out.println( t.getField1() );
}
}
结果将是
field1 value INLINE
CONSTRUCTOR
C还是JAVA?因为它们处理成员的初始化非常不同。请提供一个简短的示例,说明您到底在问什么。如果它们是在自身之前(在Java中)初始化的,那么它们不是。当在字段中指定初始值设定项时,编译器会将这些初始值设定项内联到构造函数中。它们不能是,因为它们属于特定实例,因此名称为:实例变量。欢迎使用Stackoverflow!请花点时间阅读