[Java开发之路](1)final关键字

简介:
在Java中,final关键字可以用来修饰类、方法和变量(包括成员变量和局部变量)。下面就从这三个方面来了解一下final关键字的基本用法。

1.修饰类

final修饰类时,则该类不能被继承

 
  
package com.qunar.bean;
 
public final class Student {
}
 
   
package com.qunar.bean;
 
// Remove final modifier from Student
public class Qunar extends Student{
 
public static void main(String[] args){
}
}


在使用final修饰类的时候,要注意谨慎选择,除非这个类真的在以后不会用来继承或者出于安全的考虑,尽量不要将类设计为final类。

2.修饰方法

final修饰方法,则该方法不允许被覆盖(重写)
使用final方法的原因有两个:第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率,在早期的Java实现版本中,会将final方法转为内嵌调用,但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。

如果只有在想明确禁止该方法在子类中被覆盖的情况下才将方法设置为final的。

注:类的private方法会隐式地被指定为final方法。
 
  
package com.qunar.bean;
 
public class Student {
private String name;
private int age;
private String sex;
public final void play(){
System.out.println("Student");
}
}

 
  
package com.qunar.bean;
 
public class Qunar extends Student{
// Remove final modifier from Student.play
public void play(){
System.out.println("Qunar");
}
public static void main(String[] args){
Qunar qunar = new Qunar();
qunar.play();
}
}

3.修饰属性

final修饰属性则该类的属性不会隐式的初始化(类的初始化属性必须有值)或在构造方法中赋值(但只能选其一)
 
  
package com.qunar.bean;
 
public class Student {
private String name;
// 报错 final filed age may not hava been initialized
// final private int age;
final private int age = 10;
private String sex;
public final void play(){
// final filed Student.age cannot been assigned
// age = 30;
System.out.println("Student");
}
}


4.修饰变量

final修饰变量则该变量的值只能赋一次值,即变为常量








目录
相关文章
|
5天前
|
缓存 Java 程序员
深入理解Java关键字volatile(上)
深入理解Java关键字volatile
13 0
|
7天前
|
Java API
【JAVA】final、finally、finalize 有什么区别?
【JAVA】final、finally、finalize 有什么区别?
|
4天前
|
Java
final 在 java 中有什么作用?
final 在 java 中有什么作用?
|
4天前
|
存储 安全 Java
【亮剑】Java并发编程中的四个关键字:ThreadLocal、Volatile、Synchronized和Atomic
【4月更文挑战第30天】Java并发编程涉及`ThreadLocal`、`Volatile`、`Synchronized`和`Atomic`四个关键机制。`ThreadLocal`为每个线程提供独立变量副本;`Volatile`确保变量可见性,但不保证原子性;`Synchronized`实现同步锁,保证单线程执行;`Atomic`类利用CAS实现无锁并发控制。理解其原理有助于编写高效线程安全代码。根据业务场景选择合适机制至关重要。
|
4天前
|
Java 索引
Java String应用与开发
Java String应用与开发
12 0
|
4天前
|
Java 编译器
【Java探索之旅】this 关键字 解决你的成员变量困惑
【Java探索之旅】this 关键字 解决你的成员变量困惑
12 0
|
4天前
|
Java
【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字
【Java探索之旅】我与Java的初相识(完):注释,标识符,关键字
5 0
|
5天前
|
安全 Java 开发者
构建高效微服务架构:后端开发的新范式Java中的多线程并发编程实践
【4月更文挑战第29天】在数字化转型的浪潮中,微服务架构已成为软件开发的一大趋势。它通过解耦复杂系统、提升可伸缩性和促进敏捷开发来满足现代企业不断变化的业务需求。本文将深入探讨微服务的核心概念、设计原则以及如何利用最新的后端技术栈构建和部署高效的微服务架构。我们将分析微服务带来的挑战,包括服务治理、数据一致性和网络延迟问题,并讨论相应的解决方案。通过实际案例分析和最佳实践的分享,旨在为后端开发者提供一套实施微服务的全面指导。 【4月更文挑战第29天】在现代软件开发中,多线程技术是提高程序性能和响应能力的重要手段。本文通过介绍Java语言的多线程机制,探讨了如何有效地实现线程同步和通信,以及如
|
5天前
|
Java
Java里的关键字 __final
Java里的关键字 __final
|
5天前
|
缓存 Java
深入理解Java关键字volatile(下)
深入理解Java关键字volatile(下)
6 0