修饰符-final
Java是由C/C++泛生的,其也保留了C/C++的部分特性,如关键字。在C/C++中,关键字有着特殊的含义。
final修饰符
在编程中,一般会存在一些变量或方法,程序员不让其数据“发生改变”,如数学计算要用到的圆周率,在编程时我们会给它一个固定值,但为了日后不被后其他人修改,就会用final来修饰这个“变量”,而被final修饰的“变量”称为常量
2.1final修饰属性
final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
2.1.1修饰成员变量
public class Person{
static final int age;
final int num;
final TestBoston test= new TestBoston();
static{
age = 10;
}
public Person(){
this.num = 0;
}
public Person(int num){
this.num = num;
}
public void setNum(int num){
this.num = num;//编译报错,因为类中所有构造器已经对num赋过值
}
public void goTestBost(TestBoston test){
this.test.setHost("ko");
int num = this.test.getNum();
this.test = test;//编译报错,不能修改引用变量指向的内存地址
}
}
public static void main(String[] args){
Person per1 = new Person();
Person per2 = new Person(12);
per1.num = 23;//编译报错,不能再次赋值,已经通过无参构造器赋过值了
per2.num = 13;//编译报错,不能再次赋值,已经通过有参构造器赋过值了
}
- 当使用final修饰成员变量时,必须对其显示初始化,要么在声明变量时给予初始值,要么在类的所有构造函数中对这个final变量赋初始值;
- 被
static final同时修饰的成员变量,要么在声明变量时给予初始值,要么在类中的静态代码块中赋值- 被final修饰的引用对象不能修改其指向的内存地址
2.1.2修饰形式参数
//假设main函数调用add方法,给num1、num2分别传参24,25
public int add(final int num1, final int num2){
num1 = num2++;//编译报错,不能再次赋值,再调用方法时已经给num1、num2赋过值了
return num1+num2;
}
final修饰的形式参数,只能在调用方法时对其传参,不能方法中重新给他赋值(num2++也是在给形参赋值)
2.2final修饰方法
public class Person{
public final void add(){}
private void go(){}//private final void go(){}
}
public class Student extends Person{
//编译报错,不能覆盖final修饰的方法
public void add(){}
}
用final修饰的方法可以被继承,但是不能被子类的重写;private方法都会隐式地指定为是final的,由于无法在类外使用private方法,所以也就无法覆盖它
2.3final修饰类
public final class Person{}
//编译报错,final修饰的类不能被继承
public class Student extends Person{}
用final修饰的类不能被继承,没有子类
final关键字主要用法总结
- 用于修饰成员变量或局部变量,被修饰的变量称为常量,只能被赋值一次且它的值无法被改变;对于成员变量来讲,必须在声明时或所有构造器中对它赋值;对于静态变量来讲,必须在声明时或静态代码块中对它赋值
- 用于修饰形式参数,调用方法时对其传参后的生存期里不能再被改变
- 修饰方法,表示该方法无法被重写;修饰类,表示该类无法被继承;
修饰符-final的更多相关文章
- java 非访问修饰符 final 的用法
final 修饰符,用来修饰类.方法和变量 final修饰的类不能被继承 举例,String类是final类,不可以被继承: final修饰的方法不能被重写 只是不能重写,也就是不能被子类修改,但是可 ...
- Java修饰符final总结
final 的意思是最终的,不可改变的. final可以用来修饰 a.类. b.方法(包括类方法和对象方法). c.变量(包括成员变量.局部变量). 1. final修饰类: 用final修饰的类不能 ...
- final(最终、修饰符)
/* final(最终.修饰符) final关键字的用法: 1. final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的. 2. fianl关键字修饰一个引用类型变量时,该变 ...
- java 中间 final修饰符
修饰符final:它是一个常数,我不同意改变 ,可以修改 变数,办法 ,分类 final修改变量:是final成常量,一旦赋值不能改变 常量能够在初始化时直接赋值.也能够在构造方法里赋值.仅仅能在这两 ...
- java修饰符public final static abstract transient
JAVA 修饰符public final static abstract transient 关键字: public final static abstract ... 1.public prot ...
- private static final 修饰符
java修饰符分类修饰符字段修饰符方法修饰符根据功能同主要分下几种 1.权限访问修饰符 public,protected,default,private,四种级别修饰符都用来修饰类.方法和字段 包外 ...
- 类成员(static)和final修饰符
在Java类里只能包含成员变量.方法.构造器.初始化块.内部类(包括接口.枚举)5种成员,类成员是用static来修饰的,其属于整个类. 当使用实例来访问类成员时,实际上依然是委托给该类来访问类成员, ...
- final修饰符:
知识点: 1.final关键字用于修饰类.变量和方法 2.有点类似C#里的 sealed 关键字,用于表示它修饰的方法.变量和类不可以再被改变 3.final修饰变量时,表示该变量一旦获取了初始值,就 ...
- java中static和final修饰符
static和final修饰符 一.static修饰符 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. ...
随机推荐
- Linux 系统conda环境,pip文件的导出和安装。
/** * 注意:1.在当前的Linux系统中,先生成yaml和requirement.txt文件.通过ssh命令连接到另一台Linux实例.需要先在新的Linux实例上安装 conda.然后再将 y ...
- Dapr Actor 的微服务架构
Dapr中的Actor模型,和Orleans的Virtual Actor一脉相传, 圣杰写过一篇文章Orleans 知多少 | .NET Core 分布式框架介绍过.简单来讲:Actor模型 = 状态 ...
- c#序列化和反序列化《转载》
(一)使用总体说明 .net framework的类库中提供了三个可以用于序列化和反序列化的类,分别为BinaryFormatter.SoapFormatter和XmlSerializer. Bina ...
- docker基础——2.镜像管理
1. Docker镜像的主要特点 (1) 采用分层构建机制. 最底层为bootfs,用于系统引导的文件系统,包括bootloader和kernel,容器启动后会被卸载以节约资源. 其上为rootfs, ...
- shell——eval exec
eval # cat test.sh echo \$$# eval "echo \$$#" # sh test.sh a b c $3 c shell的内建命令exec将并不启动新 ...
- App弱网测试方式
硬件设备:网络损伤仪 网络损伤模拟仪的状况包括真实广域网中存在的:有限的带宽.时延.丢包.抖动.乱序.重复报文.竞争流量.拥塞.误码等等.这些状况对网络应用来说可能会降低应用的性能,甚至有时是致命的. ...
- Note -「Mobius 反演」光速入门
目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...
- Solution -「CF 1375G」Tree Modification
\(\mathcal{Description}\) Link. 给定一棵 \(n\) 个结点的树,每次操作选择三个结点 \(a,b,c\),满足 \((a,b),(b,c)\in E\),并令 ...
- Dubbo基础一之实战初体验
本以为写这个小作文没什么难度的,可是好像并不是.前段时间重心放在驾考科目二,就想着小作文科二考过了再写也不是事,因为都实战过了.今天想着写却发现脑袋里啥都想不起来了,得翻项目和笔记回忆一下.所以还是那 ...
- 关于iOS APP转让
需要以下条件即可