final、const、readonly关键字在不同语言中代表着什么

一、Java

1.被final修饰的类不能被继承。

2.被final修饰的方法不能被重写。

被 final 修饰的类中所有的成员方法都会隐式的定义为 final 方法。

若父类中 final 方法的访问权限为 private ,则子类中不能直接继承该方法。此时可以在子类中定义相同方法名的函数,此时不会与 final 相矛盾,因为这是在子类中重新定义了新方法。

3.被final修饰的变量在初始化后不能被赋值。但可以在构造函数中进行第一次初始化。

二、C#

1.被sealed修饰的类不能被继承。

2.被sealed修饰的方法不能被重写。

3.被readonly修饰的变量不能被修改。这与Java中的final关键字类似。

readonly关键字可用于实例字段和静态字段,它确保字段只能在声明时或在类的构造函数(对于实例字段)或静态构造函数(对于静态字段)中进行赋值。一旦字段被赋值,其值就不能被修改。

4.const关键字用于声明编译时常量,这些常量的值必须在声明时指定,并且之后不能被修改。被const修饰的常量隐式是静态的。

5.readonly字段可以是任何类型(值类型或引用类型),const字段只能是值类型或字符串。

三、C++

1.在C++11及以后的版本中,被final修饰的类不能被继承。

2.被final修饰的成员函数不能被重写。

3.被const修饰的变量在初始化后不能被重新赋值。这与Java中的final关键字类似。

4.被const修饰的成员函数不会修改对象的任何成员变量(除被标记为mutable之外)。

5.不能在const对象上调用非const成员函数。

四、Swift

1.被final修饰的类不能被继承。

2.被final修饰的方法不能被重写。

3.可以在属性和下标脚本上使用 final 来防止它们被子类重写或继承。 Swift 中的属性默认就是不可重写的,但可以标记它们为 open 或 override来让属性可重写。

4.使用let来声明常量,var来声明变量。

五、Kotlin

1.类默认是final的。若希望一个类能够被继承,需要使用open关键字来修饰它。

2.方法默认是final的。若希望一个方法能够被重写,需要使用open关键字来修饰它。在子类重写父类方法时,需要用override来修饰子类方法。

3.使用val修饰的变量在初始化后不能被修改,使用var修饰的变量可以被修改。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关推荐
W_326001 小时前
Python文件进阶:一维数据与 CSV 文件读写
开发语言·python
晚风醉蝶2 小时前
1-6-插入排序-InsertionSort
java·数据结构·排序算法
Tyler_TXZ2 小时前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
不会代码的小猴2 小时前
C++新增关键字
开发语言·c++·笔记
yaoxin5211232 小时前
497. Java 反射 - 使用反射读取注解
java·开发语言·python
2019一路前行2 小时前
Python 函数式编程
开发语言·python
众人皆醒我独醉3 小时前
AI 工作负载可观测性:DCGM + Prometheus + Grafana
面试·llm·gpu
西门老铁3 小时前
JWT 是什么?三段式结构、签名原理与 6 个安全坑一次讲透
后端·面试
eralong3 小时前
Java 面向对象:继承、多态、接口
java·后端
哦虎!3 小时前
【数据库】事务
java·数据库·mysql