1.final修饰符的用法:

  • final可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值。
  • final可以修饰方法,被final修饰的方法不能被重写。
  • final可以修饰类,被final修饰的类不能够被继承。

  上面的这些“语法口诀”对真正掌握final修饰符的用法依然是不够的。

2.final修饰的变量:被final修饰的实例变量必须显示指定初始值,而且只能在如下三个位置指定初始值:

  • 定义final实例变量时指定初始值。
  • 在非静态初始化块中为final实例变量指定初始值。
  • 在构造方法中为final实例变量指定初始值。

  

package objectStudy;

public class FinalInstanceVaribaleTest {
final int var1 = 1;//定义final实例变量时指定初始值。
final int var2;
final int var3; //在非静态初始化块中为final实例变量指定初始值。
{
var2 = 2;
} // 在构造方法中为final实例变量指定初始值。
public FinalInstanceVaribaleTest() {
this.var3 = 3;
} public static void main(String[] args) {
FinalInstanceVaribaleTest finalInstanceVaribaleTest = new FinalInstanceVaribaleTest();
System.out.println(finalInstanceVaribaleTest.var1);
System.out.println(finalInstanceVaribaleTest.var2);
System.out.println(finalInstanceVaribaleTest.var3);
} }

  经过编译器的处理,上述三种方式都会被抽取到构造器中赋初始值。

  final类变量只能在两个地方指定初始值:

  • 定义final类变量时指定初始值。
  • 在静态初始化块中为final类变量指定初始值。

3.final方法不能被重写

package objectStudy;

class FatherClass {
public final void info() {
System.out.println("I am father!");
}
} class ChildrenClass {
@Override//强制重写父类方法
public final void info() {
System.out.println("I am children!");
}
} public class FinalMethodTest { public static void main(String[] args) {
ChildrenClass childrenClass = new ChildrenClass();
childrenClass.info();
} }

  上述代码运行结果如下:因为final修饰的类不能够被重写,所以当子类中有和父类中被final修饰的方法名相同的方法是,这只是子类中的一个普通方法,并没有重写父类的方法,但是如果使用@Override注释来强制重写父类中final修饰的方法时,运行结果如下所示,提示子类没有重写父类的方法。

java中final修饰符的使用的更多相关文章

  1. Java中final修饰符深入研究

    一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...

  2. JAVA中final修饰符小结

    一.final关键字可以用来修饰类.方法.变量.各有不同. A.修饰类(class).      1.该类不能被继承.      2.类中的方法不会被覆盖,因此默认都是final的.      3.用 ...

  3. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  4. Java中各种修饰符与访问修饰符

    Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...

  5. Java中final修饰的数据

    目录 Java中final修饰的数据 有初始值的final域 final+基本数据类型 final+引用数据类型 final与static final 空白final域 final修饰的参数 基本数据 ...

  6. Java中访问修饰符public、private、protecte、default

    Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...

  7. java中的修饰符和基本数据类型

    1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...

  8. 对于Java中权限修饰符的理解

    老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...

  9. Java中的修饰符

    -----------------------------------------------01----------------------------------------------- 类,方 ...

随机推荐

  1. R6的压力测试

    VersionCode:{102} VersionName:{1.0.2}

  2. incorrect integer value for column 问题解决

    最近在用zend框架,然后装了一个项目,发现注册的时候出现 General error: 1366 Incorrect integer value: '' for column 'user_id' a ...

  3. Chromium多进程资源加载

    webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 多进程 资源的实际加 ...

  4. JAVA多线程及补充

    进程 运行中的应用程序叫进程,每个进程运行时,都有自已的地址空间(内存空间)如IE浏览器在任务管器中可以看到操作系统都是支持多进程的 线程 线程是轻量级的进程,是进程中一个负责程序执行的控制单元线程没 ...

  5. Struts1之logic标签

    logic是Struts1中的逻辑标签 <%@ taglib prefix="logic" uri="http://struts.apache.org/tags-l ...

  6. POJ——2449 Remmarguts' Date

    Description "Good man never makes girls wait or breaks an appointment!" said the mandarin ...

  7. 利用FFT来进行字符串匹配

    给定串A和串B,A由26个小写字母构成,B由?和26个小写字母构成 ?可以和任意字符匹配 求A中出现了多少次B 这里可以使用fft做法,定义向量A和向量B 然后求A和rev(B)的卷积结果C C的第i ...

  8. [Leetcode] Best time to buy and sell stock ii 买卖股票的最佳时机

    Say you have an array for which the i th element is the price of a given stock on day i. Design an a ...

  9. JavaScript的大括号的语义

    Javascript中大括号"{}"有四种语义作用: 语义1. 组织复合语句,这是最常见的: view source   print? 1 if( condition ) { 2 ...

  10. 洛谷P1339 热浪

    P1339 热浪 529通过 1.3K提交 题目提供者yeszy 标签图论福建省历届夏令营 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 求助...为什么是未知错误… 求修正,貌似死循环 第 ...