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