Java中final关键字
一,概述
final关键字代表最终、不可改变的。 常见四种用法: 1. 可以用来修饰一个类 2. 可以用来修饰一个方法 3. 还可以用来修饰一个局部变量 4. 还可以用来修饰一个成员变量
二,final修饰类:太监类,没有儿子
1)当final关键字用来修饰一个类的时候,格式: public final class 类名称 { // ... }含义:当前这个类不能有任何的子类。(太监类)eg:定义一个final类pubilc final MyClass,继承报错!
2)注意:一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没儿子。)
三,final修饰方法
1.含义:
当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。
2.格式:
修饰符 final 返回值类型 方法名称(参数列表) {// 方法体 }
3.注意事项:
对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。有抽象方法的abstract类被继承时,其中的方法必须被子类Override,而final不能被Override。
public abstract class Fu {public final void method() {System.out.println("父类方法执行!");}public abstract /*final*/ void methodAbs() ; //有final会报红}
public class Zi extends Fu {@Overridepublic void methodAbs() {}// 错误写法!不能覆盖重写父类当中final的方法
// @Override
// public void method() {
// System.out.println("子类覆盖重写父类的方法!");
// }
}
四,final修饰局部变量
// 正确写法!只要保证有唯一一次赋值即可final int num3;num3 = 30;
对于基本类型来说,不可变说的是变量当中的数据不可改变 对于引用类型来说,不可变说的是变量当中的地址值不可改变
eg:一个标准类:
public class Student {private String name;public Student() {}public Student(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
Main函数里:
1)若无final修饰
Student stu1 = new Student("赵丽颖");System.out.println(stu1); // 打印地址System.out.println(stu1.getName()); // 赵丽颖stu1 = new Student("霍建华");System.out.println(stu1);System.out.println(stu1.getName()); // 霍建华
结果输出:地址不同
2)若用final修饰,地址值不可改变,否则报红
但是,地址值虽然不能变,内容可以变(地址所指向的对象可以变)。
final Student stu2 = new Student("高圆圆");// 错误写法!final的引用类型变量,其中的地址不可改变
// stu2 = new Student("赵又廷");System.out.println(stu2.getName()); // 高圆圆stu2.setName("高圆圆圆圆圆圆");System.out.println(stu2.getName()); // 高圆圆圆圆圆圆
五,final修饰成员变量
对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。
1)由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值。
2)对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一。
3)必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。
如果选择在构造方法中赋值,则要把setname( )函数取消掉
public class Person {private final String name/* = "鹿晗"*/;public Person() {name = "关晓彤";}public Person(String name) {this.name = name;}public String getName() {return name;}// public void setName(String name) {
// this.name = name;
// }
}
Java中final关键字相关推荐
- java中final关键字的使用
final 中文翻译为 最终的,在java中也是较为常用的关键字之一. 在java 中 final 关键字可以修饰 类.方法.变量 final 修饰在类上,则表示该类不能被继承,如果里面的成员变量没 ...
- ACAC java中final关键字
java中final关键字/*1.final关键字:java 中的一个关键字,最终的,不可变的可以修饰变量以及方法,还有类等.1.修饰的方法,修饰的类无法被覆盖,无法被重写,无法被继承写的方法不希望被 ...
- Java中final关键字的简介说明
下文笔者讲述java中final关键字的功能简介说明,如下所示 final关键字功能 final关键字修饰的类.方法.变量都会产生特殊的意义 如:final关键字修饰过后的类不能被子类继承final关 ...
- [转载] Java中final关键字
参考链接: Java中的final关键字 文章目录 1 final关键字1.1 final修饰类1.2 final修饰方法1.3 final修饰属性---常量1.3.1 final修饰普通数据类型的成 ...
- 关于Java中final关键字的详细介绍
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- Java中final关键字的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面大家跟随动力节点java ...
- java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)
final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...
- final关键字_夯实基础:Java中final关键字的几种用法
导语 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构. 关于static请查 ...
- Java中final关键字的作用与用法
一.特点 1.final从字面上理解含义为"最后的,最终的". 2.final可以用来修饰变量(包括类属性.对象属性.局部变量.形参),方法(包括类方法和对象方法)以及类. 二.用 ...
- Java中final关键字的作用
final关键字可以用来修饰引用.方法和类. 1.用来修饰一个引用 如果引用为基本数据类型,则该引用为常量,该值无法修改: 如果引用为引用数据类型,比如对象.数组,则该对象.数组本身可以修改,但指向该 ...
最新文章
- angular 打印 lodop 引入css样式
- Matlab2018a求解一元二次方程
- cocos ScrollView(滚动容器)加载大量item导致的卡顿问题解决方案
- python中文字体怎么设置_python matplotlib 中文字体设置
- js java传参乱码_【技术贴】解决前台js传参中文乱码
- 运行github上的Vue项目
- 将 Java 作为入门编程语言有错吗?
- php中三元运算符用法
- qt写的在ok6410上的密码锁
- MQL5中的错误处理和日志记录
- 《晨间日记的奇迹》读书笔记
- 解决chrome(谷歌)浏览器打开文件选择框响应速度慢的问题-小白实操记录
- 栈:后进先出的线性表
- android跳转谷歌地图导航,Android使用intent调取导航或者地图
- matlab高斯型隶属函数,图高斯型隶属函数.PPT
- 为什么建议大家使用 Linux 开发?爽!!!
- AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE——ViT全文翻译
- 打靶法c语言程序,打靶法求解一维Schrodinger方程程序示例
- 复制移动文件时对于目标文件系统过大的问题解决
- DevOps工程师技术栈