Java 最终修改
Final 修饰符用于将字段声明为 final。它可以与变量、方法或类一起使用。
如果我们将一个变量声明为最终的,那么它会阻止的内容被修改。变量的作用就像一个常数。最终字段在声明时必须初始化。
如果我们宣布一个方法为最终,那么它将防止被覆盖。
如果我们宣布一个类为最终,那么它将阻止被继承。我们不能继承 Java 中的最终类。
示例:最终变量
在这个例子中,我们声明了一个最终变量,并在稍后尝试修改它的值。但是最终变量不能被重新分配,所以我们得到编译时错误。
public class Test {
final int a = 10;
public static void main(String[] args) {
Test test = new Test();
test.a = 15; // compile error
System.out.println("a = "+test.a);
}
}
错误:无法分配最终的现场测试
最终方法
使用 final 关键字声明的方法称为 final 方法。当我们想要防止方法被覆盖时,它很有用。
示例:最终方法
在这个例子中,我们创建了一个 final 方法 learn(),并试图覆盖它,但是由于 final 关键字,编译器报告了一个错误。
class StudyTonight
{
final void learn()
{
System.out.println("learning something new");
}
}
// concept of Inheritance
class Student extends StudyTonight
{
void learn()
{
System.out.println("learning something interesting");
}
public static void main(String args[]) {
Student object= new Student();
object.learn();
}
}
无法覆盖今晚学习的最终方法
这将产生编译时错误,因为该方法被声明为 final,因此不能被覆盖。不要被扩展的关键字所迷惑,我们将在接下来的继承教程中了解到这一点。
让我们再举一个例子,我们也有一个最终变量和方法。
class Cloth
{
final int MAX_PRICE = 999; //final variable
final int MIN_PRICE = 699;
final void display() //final method
{
System.out.println("Maxprice is" + MAX_PRICE );
System.out.println("Minprice is" + MIN_PRICE);
}
}
在上面的类中,最大价格和最小价格变量是最终的,因此一旦声明,这些值就不能更改。同样,方法 display()是最终的,这意味着即使某个其他类继承了 Cloth 类,该方法的定义也不能更改。
期末班
一个类也可以被声明为最终类。声明为 final 的类不能被继承。 java.lang 包中的 String 类是最终类的一个例子。
我们可以创建自己的最终类,这样其他类就不能继承它。
示例:期末课堂
在这个例子中,我们创建了最后一个类 ABC,并试图从演示类扩展它。但是由于限制,编译器报告了一个错误。见下面的例子。
final class ABC{
int a = 10;
void show() {
System.out.println("a = "+a);
}
}
public class Demo extends ABC{
public static void main(String[] args) {
Demo demo = new Demo();
}
}
演示类型不能将最终的作业成本分类
Java 空白最终变量
申报时未初始化的最终变量称为空白最终变量。Java 允许在没有初始化的情况下声明一个最终变量,但是它应该只由构造器初始化。这意味着我们只能在构造器中为空的最终变量设置值。
示例:
在这个例子中,我们创建了一个空白的最终变量,并在一个可接受的构造器中初始化它。
public class Demo{
// blank final variable
final int a;
Demo(){
// initialized blank final
a = 10;
}
public static void main(String[] args) {
Demo demo = new Demo();
System.out.println("a = "+demo.a);
}
}
a=10
静态空白最终变量
使用 static 关键字声明的空白最终变量称为静态空白最终变量。它只能在静态块中初始化。
静态空白最终变量用于为类创建静态常量。
例子
在这个例子中,我们正在创建静态空白最终变量,该变量在静态块中初始化。我们使用类名来访问那个变量,因为要访问静态变量,我们不需要创建那个类的对象。
public class Demo{
// static blank final variable
static final int a;
static{
// initialized static blank final
a = 10;
}
public static void main(String[] args) {
System.out.println("a = "+Demo.a);
}
}
a=10