您可以使用最终方法,构造函数或实例初始化块来初始化类的实例变量。
只要将方法定型为最终方法(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