关于finalkeyword的总结,是非常easy学习和掌握的,大致分为用final修饰的符号常量、类、方法、属性四部分。而这四部分的内容也是我们必须掌握的,非常有用。在项目中常常来利用finalkeyword来帮忙以完毕我们特定的任务。以下就来看看终于的final:

符号常量

用 final 修饰的变量就称之为终于变量。也称之为符号常量。

比如:

double PI = 3.14;

===>>>  final double PI = 3.14;  //符号常量

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d37.a3;
public class finalTest {
public static void main(String[] args) {
final double PI = 3.14;
//PI = 3.1415926; //符号常量不可中途改变其值。
SonDemo1 sd = new SonDemo1();
int re = sd.add(10, 20);
System.out.println( re );
}
}
class Person{
private String name;
private final boolean sex ; //终于属性(仅仅读属性) public Person( String name, boolean sex ) {
this.name = name;
this.sex = sex;
}
}
class DemoA {
public final int add( int x, int y ){
return x + y;
}
}
class SonDemo1 extends DemoA {
}
//class Son extends String {
//
//}
final class Father {
}
//class Son extends Father {
//
//}</span></span>

用 final 修饰的类,即为终于类。

特性:

它不可有子类。即: 防继承的。

比如: 专家提供的 String 类就量个终于类。

方法

用 final 修饰的方法。即为终于方法。

特性:

它不可被重写。即: 防重写。

属性

用final修饰的实例变量就是终于属性,也成为仅仅读属性。

特性:

1) 它必须由final修饰。

2) 它一旦赋值。则终身不变。(中途不变)

3) 当声明终于的实例变量时。若没有赋值,则在每个构造器中必须对它赋值。

4) 终于的实例变量没有设定器。

5) 终于的实例变量名称大写。

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d38.a1;

public class FinalObjectVarTest {
public static void main(String[] args) {
Person p1 = new Person("张灵",false, 18);
Person p2 = new Person("张灵",false, 18);
System.out.println( p1 );
System.out.println( p2 ); System.out.println( p1.equals(p2) ); //p1.SEX = true;
}
} class Person {
//实例变量
private String name;
public final boolean SEX; //约定: true为男, false为女
private int age; public Person() {
int n = (int)(2 * Math.random());
this.SEX = n == 1 ;
}
public Person(String name,int age) {
this();
this.name = name;
this.age = age;
}
public Person(String name, boolean sex, int age) {
this.name = name;
SEX = sex;
this.age = age;
} public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
} //訪问器
public String getName() {
return name;
}
public boolean isSEX() {
return SEX;
}
public int getAge() {
return age;
} //
@Override
public String toString() {
return "姓名: " + name + " 性别: " + (SEX ? "男":"女") + " 年龄: " + age;
} @Override
public boolean equals(Object obj) {
Person pp = (Person)obj;
if( this.name.equals( pp.name ) && this.SEX == pp.SEX && this.age == pp.age ){
return true;
}else{
return false;
}
}
}
</span></span>

业务思想

就像英语中的一句谚语:”Each coin has two sides”(每一个硬币都有两面),keywordfinal正如那仅仅硬币。用final来定义符号常量、类、方法、属性能够降低我们非常多工作,容错率也提高了非常多。

最新文章

  1. Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件(原创)
  2. [Git]在Windows上安装Git
  3. [深入浅出Windows 10]布局原理
  4. 关于n!mod p
  5. codevs 2924 数独
  6. extjs 常见的小问题
  7. ViewPager中GridView问题
  8. uva 10036 Problem C: Divisibility
  9. .NET平台和C#语言
  10. 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: &#39;\xF0...
  11. BUGKUctf-web-writeup
  12. Ajax 向后台提交一个 JavaScript 对象数组?
  13. 10_27_unittest
  14. java读写分离的实现
  15. centos修改时区并同步时间
  16. 20181114教学sql
  17. TIJ -- CountDownLatch
  18. 【译】第13节---数据注解-Required
  19. python中文画图显示乱码解决办法
  20. php 格式化时间

热门文章

  1. Linux 设备驱动--- Poll 方法 --- Select【转】
  2. POCO库中文编程参考指南(1)总览
  3. Centos 多线程下载工具-axel
  4. git的使用03
  5. hdu 5125(LIS变形)
  6. C#集合类:动态数组、队列、栈、哈希表、字典(转)
  7. CodeChef February Challenge 2018 Broken Clock (三角函数推导 + 矩阵快速幂)
  8. 对事务的特性ACID的理解
  9. schema get_ddl
  10. CV2