final可以让你控制你的成员、方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位。
1.final成员
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。不能同时既在定义时给了值,又在构造函数中给另外的值。
public class Tux {
final int i = 3; //final可以在定义处直接赋值
final int j;
//j = 5; //final智能在定义处或者构造器中赋值,这里会报错
private Tux(int j) {
//i = 4; //在定义处已经初始化,不能再赋值,会报错
this.j = j;//如果final成员变量j没有赋值,会报错。
}
}
public static void main(String[] args)
{
Tux x =new Tux(1);
x.i = 4; //错误,已经初始化过了
//可以通过重新定义对象来指定i的值
x = new Tux(5);//此时 j = 5,(但是x在第一次赋值和第二次赋值指向的是常量池中不同的对象,new Tux(1)会在程序退出或者内存满的情况下才被回收?)
}
2.final方法
将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。
3.final类
当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了 final型的。你也可以明确的给final类中的方法加上一个final,但这显然没有意义。
4.在设计模式中有一种模式叫做不变模式,在Java中通过final关键字可以很容易的实现这个模式。
参考文章:
http://www.360doc.com/content/10/0619/17/1249632_34019121.shtml
分享到:
相关推荐
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的...
《Thinking in Java》是Bruce Eckel的经典之作,被誉为学习Java编程的必读之作。这本书以其深入浅出的方式,详尽地介绍了Java语言的核心概念和技术,包括面向对象编程、泛型、异常处理、集合框架、多线程、网络编程...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 <br>第7章 多形性 7.1 上溯...
《Thinking in Java》是 Bruce Eckel 的经典著作,其中第21章主要讲解了Java中的并发编程知识。并发编程是让程序在多个线程中同时执行任务,以提高程序的效率和响应性。以下是该章节的重点知识点: 1. **并发的多面...
《Thinking in Java》是Bruce Eckel的经典著作,第三版(3rd Edition)是Java编程领域的重要参考资料,尤其适合想要深入理解Java语言的开发者。PDF版则提供了电子化的阅读方式,便于读者随时随地查阅。 这本书深入...
《Thinking in Java》是Bruce Eckel的经典编程教材,已经更新到了第四版,但你提到的是第三版的内容。这本书深入浅出地介绍了Java编程语言,深受程序员喜爱。CHM(Compiled HTML Help)是一种Windows下的帮助文档...
2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...
"Thinking in Java 3th Edition习题及答案.chm"和"Thinking in Java 4th Edition习题答案.zip"就是针对这两版书籍的习题解答,它们将帮助你在完成书中的练习后进行核对,加深理解。PDF版本的书籍则方便你在不同设备...
《Thinking in Java》是一本经典的Java编程教材,适合初学者深入理解Java语言。书中的内容涵盖了从基础到高级的各种主题,旨在帮助读者建立全面而深入的Java编程思维。 首先,书中的第一章“对象入门”介绍了面向...
《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java编程语言的核心概念和技术。第四版的源码提供了书中的实例代码,对于学习和理解Java编程有着极高的价值。下面,我们将详细探讨这些源码中涵盖...
《Thinking in Java》是Java学习的经典著作,第四版更是包含了作者对Java语言深入的理解和丰富的实践经验。本书旨在帮助读者全面掌握Java编程思想,从基础到高级特性,涵盖了广泛的知识点。 1. **对象和面向对象...
《Thinking in Java》是Bruce Eckel的经典之作,它深入浅出地介绍了Java编程语言的核心概念和技术。这本书分为多个部分,涵盖了从基础语法到高级特性的广泛内容,是学习和理解Java的重要参考资料。以下是对该书内容...
### 4. Java容器 - **容器(Container)**:在Java中通常指的是集合框架中的类如List、Set、Map等,它们提供了一种存储和管理对象的方式。 - **元素访问**:可以通过索引或者迭代器等方式获取容器中的元素。 ### 5. ...
《Thinking in Java》是Bruce Eckel的经典Java编程教程,它以其深入浅出的讲解和丰富的实践示例深受程序员喜爱。第四版是该书的一个重要版本,涵盖了Java语言的诸多核心概念和技术,包括基础语法、面向对象编程、...
JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...
`final` 关键字是 Java 中的一个保留字,用于修饰变量、方法和类。`final` 关键字的使用有以下几点: 1. 当一个变量被声明为 `final` 时,该变量的值不能被改变。 2. 当一个方法被声明为 `final` 时,该方法不能被...
《Thinking in Java》是Java开发领域的一本经典著作,由Bruce Eckel撰写,深受程序员喜爱。这本书深入浅出地介绍了Java编程语言的核心概念和技术,涵盖了从基础语法到高级特性的全面内容,对于学习和理解Java有极大...
总的来说,这份“Thinking-in-Java-4th-Edition习题答案”涵盖了Java编程的广泛领域,从基本语法到高级特性,从理论到实践,是提高Java技能的宝贵资源。通过解决这些习题,你不仅可以巩固所学知识,还能锻炼解决问题...