之所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持不变,而且不可被覆盖或改写,就可以采取这种做法。
采用final方法的第二个理由是程序执行的效率。将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入“嵌入”调用里。
final在Java中并不常用,然而它却为我们提供了诸如在C语言中定义常量的功能,不
仅如此,final还可以让你控制你的成员、方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位,也
是学习Java时必须要知道和掌握的关键字之一。 final成员
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,
而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方
只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。下面这段代码演示了这一点:
import java.util.List; import java.util.ArrayList;
import java.util.LinkedList; public class Bat{
final PI=3.14; //在定义时便给址值 f
1.定义及编程技巧
/*
* final方法是在派生类中不能被覆盖的方法,final类是不能被覆盖的类。一个类可以含有final方法
* final类和final方法使用final声明
* 技巧:final static 类型成员变量。static使得变量只存在一个拷贝。final使得它不能改变。
* */
2.关于final成员赋值的讨论:
a.final 成员能且只能被初始化一次
b.final成员必须在声明时或者方法中被初始化,而不能在其它的地方被初始化。
eg:
package mypackage;
public final class FinallyTest
{
private final int params;
public FinallyTest()
{
params=5;
}
public FinallyTest(int para)
{
params=para;
}
public static void main(String[] args)
{
FinallyTest ft=new FinallyTest(20);
System.out.println(ft.params);
}
}
|
eg2:
package mypackage;
public final class FinallyTest
{
private final int params;
public FinallyTest()
{
this(10);
}
public FinallyTest(int para)
{
params=para;
}
public static void main(String[] args)
{
FinallyTest ft=new FinallyTest();
System.out.println(ft.params);
}
}
|
上面是两个final初始化的例子。下面我们看一下两种错误的例子
eg3
package mypackage;
public final class FinallyTest
{
private final int params=11;//此处已经赋值
public FinallyTest()
{
this(10);
}
public FinallyTest(int para)
{
params=para;
}
public static void main(String[] args)
{
FinallyTest ft=new FinallyTest();
System.out.println(ft.params);
}
}
Error(18,3): variable params is declared final; cannot be assigned
|
eg4:
package mypackage;
public final class FinallyTest
{
private final int params;
public FinallyTest()
{
this(10);
}
public FinallyTest(int para)
{
this.setParams(para);//不能用函数给它赋值必须直接赋值 |
}
public void setParams(int b)
{
params=b;
}
public static void main(String[] args)
{
FinallyTest ft=new FinallyTest();
System.out.println(ft.params);
}
}
Error(22,2): variable params is declared final; cannot be assigned
|
eg5
package mypackage;
public final class FinallyTest
{
private final int params;
public FinallyTest()
{
this(10);
}
public FinallyTest(int para)
{
}
public static void main(String[] args)
{
FinallyTest ft=new FinallyTest();
System.out.println(ft.params);
}
}
Error(10,19): variable params might not have been initialized
|
3.几点说明:
在java中,普通变量系统是自动初始化的,数值变量自动初始化为0,其余类型变量自动初始化为空。但是final类型的变量必须显示初始化,且初始化的方法必须是在申明时或者在构造方法中直接赋值,而不能通过调用函数赋值。
关于构造方法重载的问题,如果程序中没有显示的说明构造方法,那么就有默认的构造方法。如果程序中显示的声明了构造方法,那么默认的构造方法就不再存在。
在本例中,给出了关于this的使用方法
分享到:
相关推荐
Java中final类的简单使用,并对Java关键字的使用做出了总结
Java中的final关键字是一个非常重要的修饰符,它用于声明变量、方法和类,确保它们在程序执行期间保持不变。final关键字在Java编程中的应用广泛,可以帮助提高代码的稳定性和可维护性。 1. **常量的声明** final...
final 关键字在 Java 中有多种用法,包括修饰变量、方法、类等。下面是 final 关键字的各种用法: 1. final 修饰变量:表示该变量一旦被初始化,程序无法修改变量的值,该变量变成了一个常量。注意,系统不会默认为...
在Java编程语言中,`final` 和 `static` 是两个非常重要的关键字,它们分别具有不同的含义和用法,但都对代码的结构和行为产生深远影响。本文将深入探讨这两个关键字,并结合实际示例来解释它们的应用场景。 首先,...
java中final和static讲解及实例
在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来定义不可变性和唯一性。这个关键字可以应用于变量、方法和类,分别赋予它们不同的特性。以下是对`final`关键字在不同场景下使用的详细介绍: 1....
Java中的`final`和`static`关键字是编程中非常重要的两个修饰符,它们分别用于不同的场景,以确保代码的稳定性和高效性。 首先,`final`关键字主要用于表示不可变性。它可以用来修饰类、方法和变量。对于类,如果一...
Java 中的 `final` 关键字是一个至关重要的概念,它被用来声明类、方法和变量,以确保它们在程序执行过程中不可更改。深入理解 `final` 关键字可以帮助开发者写出更加安全、高效的代码。 首先,`final` 关键字可以...
`final`关键字在Java中有多种用途,它可以用来修饰类、方法和变量,其主要目的是确保被修饰的对象具有不可变性或只读性。 #### 1. `final`修饰变量 当`final`用于修饰一个变量时,该变量成为常量,一旦赋值后就不...
在 Java 编程语言中,final 和 static 是两个非常重要的关键字,它们可以用来修饰类、方法、变量等,了解它们的使用方法和限制非常重要。本文将详细总结 final 和 static 的使用方法和限制。 一、final 关键字 ...
在Java编程语言中,`final`关键字是一个非常重要的概念,它具有多种用途,涉及到类、方法和变量的声明。在本篇文章中,我们将深入探讨`final`关键字在Java中的使用和意义。 首先,`final`关键字用于声明一个不可变...
"关于Java中final的深度剖析" final关键字是Java中一种非常重要的关键字,它可以用来修饰变量、方法和类,具有多种用途和效果。 1.final变量 在Java中,final变量是一种常量,它的值不能被改变。final变量可以在...
- **定义**:final是Java中的一个关键字,用于声明变量、方法或类。 - **特点**: - 当用于声明变量时,表示该变量的值一旦被初始化后就不能改变。 - 当用于声明方法时,表示该方法不能被子类重写。 - 当用于声明...
在Java编程语言中,`final`关键字扮演着一个至关重要的角色,它被用来声明一个变量、方法或类为不可变的。在这个学习demo中,我们将深入理解`final`关键字的各种用法及其背后的原理。 首先,`final`关键字用于变量...
在Java编程语言中,`final`关键字有着重要的作用,它用于标记一个变量、方法或类,表示不可变性。这个特性在多个方面都有应用,包括创建常量、确保引用不可变以及在多线程环境中提供安全。 1. **常量的创建**: `...
在Java编程中,final关键字扮演着至关重要的角色,它用于声明不可变的变量、方法以及类,以确保代码的稳定性和安全性。以下是关于final关键字的深入解析: 1. **final类**: 当一个类被声明为final时,这意味着这...
Java 中的 final 变量是指不能被改变的变量,它有三个方面的作用:修饰变量、修饰方法和修饰类。在 Java 中,final 变量是一种常量,它只能被赋值一次,赋值后值不再改变。 final 变量的使用方法有多种,例如在变量...
- **知识点**:Java 中方法调用及其结果。 - **解释**:在这个例子中,方法 `method` 接受一个参数并将其加倍。当 `method(5)` 被调用时,参数值为 5,执行 `x += x` 后的结果为 10。因此,选项 B “10”是正确的。 ...
在Java编程语言中,`static`, `this`, `super`, 和 `final` 是四个非常重要的关键字,它们分别代表不同的概念并具有特殊的用法。 一、`static` `static` 关键字用于声明类级别的成员(变量或方法),这意味着它们...
Java中的`final`关键字是一个非常重要的概念,它用于表示不可变性或终结状态。下面我们将详细探讨`final`关键字在修饰变量、方法和类时的不同用法。 1. **final变量** - 常量定义:`final`变量一旦被初始化后,其...