java中final修饰符的使用
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修饰符的使用的更多相关文章
- Java中final修饰符深入研究
一.开篇 本博客来自:http://www.cnblogs.com/yuananyun/ final修饰符是Java中比较简单常用的修饰符,同时也是一个被"误解"较多的修饰符.对很 ...
- JAVA中final修饰符小结
一.final关键字可以用来修饰类.方法.变量.各有不同. A.修饰类(class). 1.该类不能被继承. 2.类中的方法不会被覆盖,因此默认都是final的. 3.用 ...
- Java中的 修饰符
java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符 访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...
- Java中各种修饰符与访问修饰符
Java中各种修饰符与访问修饰符 类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备 ...
- Java中final修饰的数据
目录 Java中final修饰的数据 有初始值的final域 final+基本数据类型 final+引用数据类型 final与static final 空白final域 final修饰的参数 基本数据 ...
- Java中访问修饰符public、private、protecte、default
Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅 ...
- java中的修饰符和基本数据类型
1.java中的修饰符 java中的修饰符主要是用来对类资源进行一个权限控制,上面表格表现的很清晰,无需多言. 2.java中的基本数据类型 java中的数据类型分为引用类型和基本类型.基本数据类型有 ...
- 对于Java中权限修饰符的理解
老是把Java中权限修饰符给忘记,写一个博客加深印象吧 权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类. 首先要知道包的概念,Java中一个包是指一个package下的所有文件. pr ...
- Java中的修饰符
-----------------------------------------------01----------------------------------------------- 类,方 ...
随机推荐
- R6的压力测试
VersionCode:{102} VersionName:{1.0.2}
- incorrect integer value for column 问题解决
最近在用zend框架,然后装了一个项目,发现注册的时候出现 General error: 1366 Incorrect integer value: '' for column 'user_id' a ...
- Chromium多进程资源加载
webkit笔记,主要来自 朱永盛 <WebKit技术内幕> 学习笔记,转载就注明原著,该书是国内仅有的Webkit内核的书籍,学习的好导师,推荐有兴趣的朋友可以购买 多进程 资源的实际加 ...
- JAVA多线程及补充
进程 运行中的应用程序叫进程,每个进程运行时,都有自已的地址空间(内存空间)如IE浏览器在任务管器中可以看到操作系统都是支持多进程的 线程 线程是轻量级的进程,是进程中一个负责程序执行的控制单元线程没 ...
- Struts1之logic标签
logic是Struts1中的逻辑标签 <%@ taglib prefix="logic" uri="http://struts.apache.org/tags-l ...
- POJ——2449 Remmarguts' Date
Description "Good man never makes girls wait or breaks an appointment!" said the mandarin ...
- 利用FFT来进行字符串匹配
给定串A和串B,A由26个小写字母构成,B由?和26个小写字母构成 ?可以和任意字符匹配 求A中出现了多少次B 这里可以使用fft做法,定义向量A和向量B 然后求A和rev(B)的卷积结果C C的第i ...
- [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 ...
- JavaScript的大括号的语义
Javascript中大括号"{}"有四种语义作用: 语义1. 组织复合语句,这是最常见的: view source print? 1 if( condition ) { 2 ...
- 洛谷P1339 热浪
P1339 热浪 529通过 1.3K提交 题目提供者yeszy 标签图论福建省历届夏令营 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 求助...为什么是未知错误… 求修正,貌似死循环 第 ...