在Java中有多少种方法可以初始化类的实例变量?

您可以使用最终方法,构造函数或实例初始化块来初始化类的实例变量。

Final 方法

只要将方法定型为最终方法(Final),就不能覆盖它。也就是说,您不能从子类提供对超类的final方法的实现。

即,使方法成为最终方法的目的是防止从外部(子类)修改方法。您还可以使用这些最终方法来初始化实例变量。

示例

import java.util.Scanner;
public class FinalMethods {
   int age = getAge();
   String name = getName();
   static Scanner sc = new Scanner(System.in);
   public static final int getAge() {
      System.out.println("Enter age value");
      return sc.nextInt();
   }
   public static final String getName() {
      System.out.println("Enter name value");
      return sc.next();
   }
   public void display(){
      System.out.println("Name and age values: ");
      System.out.println(this.name);
      System.out.println(this.age);
   }
   public static void main(String args[]){
      FinalMethods obj = new FinalMethods();
      obj.display();
   }
}

输出结果

Enter age value
25
Enter name value
Krishna
Name and age values:
Krishna
25

构造函数

构造函数用于创建时初始化对象。从语法上讲,它类似于一种方法。区别在于,构造函数与其类具有相同的名称,并且没有返回类型。

无需显式调用构造函数,这些构造函数会在实例化时自动调用。

示例

public class Test {
   String name;
   int age;
   public Test(String name, int age){
      this.name = name;
      this.age = age;
   }
   public static void main(String args[]) {
      Test obj = new Test("Krishna", 25);
      System.out.println("Name: "+obj.name);
      System.out.println("Age: "+obj.age);
   }
}

输出结果

Name: Krishna
Age: 25

实例初始化块

类似于静态块,Java还提供了实例初始化块,用于初始化实例变量,以替代构造函数。

每当您定义初始化块时,Java都会将其代码复制到构造函数。因此,您还可以使用它们在类的构造函数之间共享代码。

示例

public class Student {
   String name;
   int age;
   {
      name = "Krishna";
      age = 25;
   }
   public static void main(String args[]){
      Student std = new Student();
      System.out.println(std.age);
      System.out.println(std.name);
   }
}

输出结果

25
Krishna