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. .Net下的进程间的通讯 -- Windows消息队列

    Windows 消息队列(MSMQ),是微软Windows2000以上的操作系统的一个服务,可以提供在计算机间消息的可靠传输,用来在两个进程间进行异步通讯最合适不过了.在.Net中有一个Message ...

  2. TUXEDO管理命令总结

    tmboot  启动服务: 参数说明: -l  lmid 启动逻辑服务器名为lmcd服务器上的所有进程 -g grpname 启动GROUP名为grpname的所有进程 -i  srvid 启动SRV ...

  3. iOS相关,过年回来电脑上的证书都失效了,解决方法。

    今天发了个问题,就是关于电脑上的证书都失效的问题,就这个问题的解决方法如下:https://segmentfault.com/q/1010000004433963 1,按照链接下载,https://d ...

  4. 邓白氏编码(duns number)申请入口的路径-苹果开发者申请必

    http://tieba.baidu.com/p/3861287522 这个网址有详细的介绍

  5. 简单的背包变形HDU1203,HDU2955

    今天一直在写背包,不过中间停了一段时间在写shell. 一直在做01背包.今天做了这两题很相似的背包 首先是HDU1203 Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要 ...

  6. 一个由IsPrime算法引发的细节问题

    //******************************* // //    2014年9月18日星期四,于宿舍撰写 //    作者:夏华林 // //******************* ...

  7. 对装饰模式(Decorator)的解读

    看过好多对装饰模式的讲解,他们几乎都有一句相同的话:对现有类功能的扩展.不知道大家怎么理解这句话的,之前我把”对功能的扩展“理解成”加功能=加方法“,比如Person类本来有两个功能:Eat 和 Ru ...

  8. Pintos-斯坦福大学操作系统Project详解-Project1

    转载请注明出处. 前言:  本实验来自斯坦福大学cs140课程,只限于教学用途,以下是他们对于Pintos系统的介绍:  Pintos is a simple operating system fra ...

  9. React Native:使用 JavaScript 构建原生应用 详细剖析

    数月前,Facebook 对外宣布了正在开发的 React Native 框架,这个框架允许你使用 JavaScript 开发原生的 iOS 应用——就在今天,Beta 版的仓库释出了! 基于 Pho ...

  10. ext 扩展控件—moneyField

    /** *数字控件 *带大写提示,和千分位 **/ Ext.define(appNameSpace+'.utils.MoneyField', { extend : 'Ext.form.field.Te ...