[JAVA · 初级]:11.终结者-final

简介:

关于final关键字的总结,是很容易学习和掌握的,大致分为用final修饰的符号常量、类、方法、属性四部分,而这四部分的内容也是我们必须掌握的,很实用,在项目中经常来利用final关键字来帮忙以完成我们特定的任务。下面就来看看最终的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”(每个硬币都有两面),关键字final正如那只硬币。用final来定义符号常量、类、方法、属性可以减少我们很多工作,容错率也提高了很多。


目录
相关文章
|
1月前
|
存储 缓存 安全
除了变量,final还能修饰哪些Java元素
在Java中,final关键字不仅可以修饰变量,还可以用于修饰类、方法和参数。修饰类时,该类不能被继承;修饰方法时,方法不能被重写;修饰参数时,参数在方法体内不能被修改。
25 2
|
1月前
|
Java
final 在 java 中有什么作用
在 Java 中,`final` 关键字用于限制变量、方法和类的修改或继承。对变量使用 `final` 可使其成为常量;对方法使用 `final` 禁止其被重写;对类使用 `final` 禁止其被继承。
34 0
|
2月前
|
Java 程序员
Java 面试高频考点:static 和 final 深度剖析
本文介绍了 Java 中的 `static` 和 `final` 关键字。`static` 修饰的属性和方法属于类而非对象,所有实例共享;`final` 用于变量、方法和类,确保其不可修改或继承。两者结合可用于定义常量。文章通过具体示例详细解析了它们的用法和应用场景。
38 3
|
2月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
在Java并发编程中,`final`关键字不仅用于修饰变量、方法和类,还在多线程环境中确保对象状态的可见性和不变性。本文深入探讨了`final`关键字的作用,特别是其在final域重排序规则中的应用,以及如何防止对象的“部分创建”问题,确保线程安全。通过具体示例,文章详细解析了final域的写入和读取操作的重排序规则,以及这些规则在不同处理器上的实现差异。
了解final关键字在Java并发编程领域的作用吗?
|
2月前
|
Java 编译器
在Java中,关于final、static关键字与方法的重写和继承【易错点】
在Java中,关于final、static关键字与方法的重写和继承【易错点】
28 5
|
2月前
|
缓存 安全 Java
Java中 final、finally、finalize 有什么区别?
本文详细阐述了Java中`final`、`finally`和`finalize`的区别:`final`用于修饰类、方法和变量以表示不可变性;`finally`是用于确保在`try-catch`结构中无论是否发生异常都能执行的代码块;而`finalize`是`Object`类的方法,用于在对象被垃圾回收前执行清理工作,但在JDK 9中已被标记为弃用。
45 0
Java中 final、finally、finalize 有什么区别?
|
2月前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
249 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
2月前
|
存储 安全 Java
了解final关键字在Java并发编程领域的作用吗?
了解final关键字在Java并发编程领域的作用吗?
|
3月前
|
安全 Java API
【本地与Java无缝对接】JDK 22外部函数和内存API:JNI终结者,性能与安全双提升!
【9月更文挑战第6天】JDK 22的外部函数和内存API无疑是Java编程语言发展史上的一个重要里程碑。它不仅解决了JNI的诸多局限和挑战,还为Java与本地代码的互操作提供了更加高效、安全和简洁的解决方案。随着FFM API的逐渐成熟和完善,我们有理由相信,Java将在更多领域展现出其强大的生命力和竞争力。让我们共同期待Java编程新纪元的到来!
117 11
|
2月前
|
Java 程序员 编译器
【Java】继承、super、final、子类构造方法
【Java】继承、super、final、子类构造方法
42 0