`
yxwang0615
  • 浏览: 552117 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

thinking in java 4 final

    博客分类:
  • java
阅读更多
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

分享到:
评论

相关推荐

    Thinking in 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 ...

    Thinking in java(中文)

    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 中文第四版+习题答案

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的...

    JAVA_Thinking in 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 ...

    Thinking in Java 4th Edition

    Arrays in Java .............................. 44 You never need to destroy an object .................. 45 Scoping ........................................ 45 Scope of objects ...........................

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    “Thinking in Java”详细目录   写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 ...

    Thinking in Java, 3rd Edition

    Final Version to Printer Download includes HTML book and source code

    thinking in java

    这本书是学习JAVA的经典入门教程,与大家分享 package c07.music; import com.bruceeckel.simpletest.*; public class Note { private String noteName; private Note(String noteName) { this.noteName = note...

    thinkinjava源码-ThinkingInJava:用Java源代码思考

    Thinking In Java Source Code 1、文件过滤器 实现FilenameFilter接口来对文件做出过滤 2、关与给匿名类需要传入final参数问题 匿名内部类编译时,会单独生成一个class文件,该类持有外部类的引用,传入的参数都会...

    thinkinjava源码-Think-In-Java-Code:ThinkingInJava(第四版)书中源码以及课后练习代码

    Think-In-Java-Code Thinking In Java 书中源码以及课后练习代码(从第7章开始随着看书的进度一步步更新) 第七章 复用类 7.1 组合语法 7.2 继承语法 7.2.1 初始化基类 7.3 代理 7.4 结合使用组合和继承 7.4.1 确保...

    thinking_in_java:将TIJ4源代码重新排列到单独的项目中-java project source code

    Thinking_in_Java 将TIJ4源代码重新安排到可以在IntelliJ中执行的单独项目中 第5章初始化 不 Prj 描述 1个 2个 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18岁 19 20 21岁 22 23 24 25 26 27 28岁 29 30 31 ...

    Web Development with JavaServer Pages

    Web Development with JavaServer Pages is truly an excellent and in-depth tutorial in the effective use of JSPs to build Web applications. Geared toward the Web designer or intermediate Java programmer...

    Java内部类:你真得了解方法内部类吗?

    普通内部类方法内部类匿名内部类静态内部类参考Thinking in Java Java内部类:你真得了解方法内部类吗? java内部类,相信很多人都使用过内部类,新建线程使用的匿名内部类,但是有很多人对内部类的一些概念处于模糊...

    二十三种设计模式【PDF版】

    使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用...

Global site tag (gtag.js) - Google Analytics