package com.zyw.reusableClass;

import java.util.Random;

/**
* Created by zyw on 2016/3/26.
* from think in java
* final数据
* 1.static final VALUE_THREE 做为编译期常量 大写字母命名,字与字下划线分开
* 2.不能因为数据为final就认为在编译时其值固定
* 3.final引用 表示引用不能指向新的对象 数组就是一种引用
*/
public class FinalData {
private static Random random=new Random(47);//private Random random=new Random(47);
// Non-static field 'random' cant be referenced from a static context
private static final int VALUE_TWO=99;
private static final int VALUE_THREE=39;
public static final int i4= random.nextInt(20);
static final int INT_5=random.nextInt(20);
final int b=random.nextInt();
final Value value=new Value(11);
private final int[] a={1,2,4,5};
public static void main(String args[]){
FinalData finalData=new FinalData();
FinalData finalData2=new FinalData();
finalData.value.i++;
for(int i=0;i<finalData.a.length;i++){finalData.a[i]++;}//finalData.value=new Value(22); error
System.out.println(FinalData.i4);
System.out.println(FinalData.INT_5);
System.out.println(finalData.a);
System.out.println(finalData2.a);
}
}
class Value{
int i;
public Value(int i){this.i=i;}
}
package com.zyw.reusableClass;

/**
* Created by zyw on 2016/3/26.
* blank final 只要保证在使用前,被初始化即可
* 因此一个类的final域可以根据对象有所不同,又保持其恒定不变的特性
*/
public class BlankFinal {
private final Poppet p; public BlankFinal(int i) {
this.p = new Poppet(i);
}
public static void main(String args[]){
BlankFinal blankFinal=new BlankFinal(10);
System.out.println(blankFinal.p.toString());
}
}
class Poppet{
private int i;
Poppet(int i){this.i=i;}
public String toString(){return "poppet("+i+")";}
}
package com.zyw.reusableClass;

/**
* Created by zyw on 2016/3/26.
* 1.private 修饰类中方法隐式指定为final,此方法不需于基类接口的一部分
* ,仅是一些隐藏在类中的程序代码。
* 2.final 修饰方法,以防被继承覆盖。
* 3.final 修饰类 不允许被继承,最终类。
*/
class WithFinals{
private final void f(){System.out.println("withFinal.f()");}
private void g(){System.out.println("withFinal.g()");}
}
class OverridingPrivate extends WithFinals{
public final void f(){System.out.println("OverridingPrivate.f()");}
public void g(){System.out.println("OverridingPrivate.g()");}
}
class OverridingPrivate2 extends OverridingPrivate{
// public final void f(){System.out.println("OverridingPrivate2.f()");}
public final void g(){System.out.println("OverridingPrivate2.g()");}
}
public class FinalOverridingIllusion {
public static void main(String args[]){
OverridingPrivate2 op2=new OverridingPrivate2();
op2.f();
op2.g();
OverridingPrivate op=op2;
op.f();
WithFinals wf=op2;
//wf.g();
}
}

关键字 final的更多相关文章

  1. Java关键字final、static

    一.final根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. final ...

  2. final关键字(final是最终的)

    final关键字(final是最终的) 1.final修饰特点 a.修饰类,类不能被继承 b.修饰变量,变量就变成了常量, 修饰基本数据类:final int num = 10; 修饰引用数据类型变量 ...

  3. 【转】Java关键字final、static使用总结

    转自:http://lavasoft.blog.51cto.com/62575/18771/   Java关键字final.static使用总结   一.final        根据程序上下文环境, ...

  4. Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  5. 转!Java关键字final、static使用总结

    Java关键字final.static使用总结   一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可 ...

  6. Java关键字final、static使用总结(转)

    Java关键字final.static使用总结   一.final        根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方 ...

  7. (转)Java关键字final、static使用总结

    一.final  根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. fin ...

  8. [Java] 关键字final、static使用总结

    一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率.final ...

  9. JAVA基础知识(2)--关键字final的使用

    /***Final关键字的使用*@author lihaiming*Email:912547587@qq.com*关键字Final可以修饰属性,方法,类*修饰属性的时候,final修饰的变量是一个常量 ...

  10. 关键字final整理

    关键字final整理 由于语境(应用环境)不同,final 关键字的含义可能会稍微产生一些差异.但它最一般的意思就是声明"这个东西不能改变".之所以要禁止改变,可能是考虑到两方面的 ...

随机推荐

  1. C# - linq查询现有的DataTable

    可以通过linq对现有的DataTable进行查询,并将结果拷贝至新的DataTable中例如: // Query the SalesOrderHeader table for orders plac ...

  2. 使用Delphi读取网络上的文本文件,html文件

    使用Delphi读取网络上的txt和html文件 可以使用两种方法: 1.下载文件,然后进行读取 下载文件的Delphi代码可以参考: http://www.delphibbs.com/delphib ...

  3. 百度前端技术学院(IFE)2016春季学期总结

    今天(5月16日)作为第八个提交者提交了任务五十:RIA微型问卷管理平台 这样一个综合性的大任务,宣告我的IFE春季学期课程学习顺利完成.其实任务五十并不复杂,现在再让我来做,可能一周不到就写出来了, ...

  4. js操作数据库实现注册和登陆

    自从node-js出现之后,不只是java,php等后端语言可以操作数据库,进行内容的增删改查,javascript简本语言同样具备了该项技能,而且在node下,js具备了很强的操作性和代码的阅读性, ...

  5. 数据库学习(整理)----6--Oracle如何快速备份和多次备份数表数据

    1.说明:  这里假设一种应用场景! 假设,银行系统中有大量的数据需要及时备份,如何才能快速高效呢! 条件需求: (1).不能设置同步锁(设置的会影响银行正常业务进行!使得银行系统处于维护状态,这是不 ...

  6. POJ 1936 All in All(模拟)

    All in All 题目链接:http://poj.org/problem?id=1936 题目大意:判断从字符串s2中能否找到子串s1.字符串长度为10W. Sample Input sequen ...

  7. Visual EmbedLinux Tools:让vs支持嵌入式Linux开发(转)

    转自:http://blog.csdn.net/lights_joy/article/details/49499743 1 什么是Visual EmbedLinux Tools Visual Embe ...

  8. CSAPP Lab2: Binary Bomb

    著名的CSAPP实验:二进制炸弹 就是通过gdb和反汇编猜测程序意图,共有6关和一个隐藏关卡 只有输入正确的字符串才能过关,否则会程序会bomb终止运行 隐藏关卡需要输入特定字符串方会开启 实验材料下 ...

  9. 注册表和ODBC

         注册表使用的是树型体系结构,树中的每个结点称键.每个键也可以包含其他的键或子键.它允许进一步的分支,也即为值,它用来存储有效的数据.在注册表中,注册表用键来组织数据,一个键中的值用它们的名来 ...

  10. Mac Pro的HDMI接口与WI-FI可能存在冲突的解决方法

    当我将Mac Pro通过HDMI->DVI转接头接上一台显示器时,正在使用的WI-FI网络立马不能使用,重新连接网络也不行,但断开HDMI连接后,WI-FI立马恢复正常. 在网上查,在apple ...