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. Ubuntu下解压rar文件的方法

    原帖地址:http://hi.baidu.com/remoteexp/item/1c32d0ffb92e946c3c148596 一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了ra ...

  2. hibernate逆向工程生成的实体映射需要修改

    根据实际情况进行修改,主要2处,注释的位置<!-- 把catalog="platform"删掉 -->,<!-- 替换为native -->   <? ...

  3. Java:Date、Calendar、Timestamp的使用

    一.Java.util.Date 该对象包含了年月日时分秒信息.具体使用如下代码: //String 转换为Date private static void dateDemo() throws Par ...

  4. jQuery noConflict() 方法

    如何在页面上同时使用 jQuery 和其他框架? jQuery 和其他 JavaScript 框架 正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写. 如果其他 JavaSc ...

  5. js实现文件上传,删除效果

    效果图: 刚开始: 点击按钮"选择更多后",可以添加很多选择文件: 点击按钮"删除"后: 实现代码: <!DOCTYPE html><html ...

  6. 站点下的GridView的RowCommand事件的设置,与站点应用不一样

    <ItemTemplate>                                                                    <%--<a ...

  7. 异步调用backgroudworker

    先看一个小例子:C#客户端打开一个控件,控件中加载了好多数据大约要用5秒中,如果我们直接打开控件,那么这个控件就要5秒中才能弹出来,当然这个时候用户已经把他Kill了.这个时候我们就需要先给用户把控件 ...

  8. 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url.

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  9. SVN遇到Can't convert string from 'UTF-8' to native encoding

    刚配好mysql,svn co代码的时候遇到问题 svn: Can't convert string from 'UTF-8' to native encoding: svn: platform/co ...

  10. learn-python3

    # learn-python3   这是我初学Python时写的一套Python基础示例程序.主要基于廖雪峰老师的Python3教程和<<深入理解Python>>. 感谢! 下 ...