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. iOS程序员的自我修养之道

    新技术的了解渠道 WWDC开发者大会视频 官方文档 General -> Guides -> iOS x.x API Diffs 程序员的学习 iOS技术的学习 官当文档 Sample C ...

  2. CSV文件规则

    CSV文件规则 1 开头是不留空,以行为单位.2 可含或不含列名,含列名则居文件第一行.3 一行数据不跨行,无空行.4 以半角逗号(即,)作分隔符,列为空也要表达其存在.5 列内容如存在半角逗号(即, ...

  3. .NET 互操作

    首先推荐一本书<精通.NET 互操作> ,这本书是目前中文资料里讲 互操作最详尽的书了. 做系统集成项目的同学应该都和设备打过交道(如视频设备:海康.大华等),在大多数情况下这些设备厂商会 ...

  4. new、delete用法(一)

    第一部分:new的使用: #define DEBUG_NEW new(THIS_FILE, __LINE__)解释 THIS_FILE:表示当前类所处的文件名: __LINE__:表示分配内存操作所在 ...

  5. (转)Android 从底层实现让应用杀不死【失效Closed】(1)

    转自:http://klob.diandi.life/?p=21#symple-tab-%e8%b0%83%e6%9f%a5%e5%af%b9%e8%b1%a1 情景还原: 我的应用调用了Notifi ...

  6. Java连接mySql—JDBC连接数据库

    利用JDBC开发数据库 经典应该用框架: 第一步,加载JDBC数据库驱动程序(不同的数据库有不同的数据库驱动,所以在连接数据库之前,需加载驱动) 格式: String driver = "c ...

  7. oracle查看用户信息

    1.查看所有用户:select * from dba_users; select * from all_users; select * from user_users;2.查看用户或角色系统权限(直接 ...

  8. [Neural Networks] Dropout阅读笔记

    多伦多大学Hinton组 http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf 一.目的 降低overfitting的风险 二.原理 ...

  9. js 中对象--对象结构(原型链基础解析)

    对于本篇对于如何自定义对象.和对象相关的属性操作不了解的话,可以查我对这两篇博客.了解这两篇可以更容易理解本篇文章 用构造函数创建了一个对象  obj对象的本身创建了两个属性  x=1   ,y=2 ...

  10. 反射 DataTable拓展方法 转实体对象、实体集合、JSON

    Mapper类 using System; using System.Collections.Generic; using System.Data; using System.Globalizatio ...