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等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

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

相关推荐
超级哇塞3 分钟前
vscode快速验证和团队协作
c++
MegaDataFlowers8 分钟前
CRUD操作及配置解析
java·mybatis
睡一觉就好了。11 分钟前
C++ 模板进阶
c++
一叶落43811 分钟前
【LeetCode】1. 两数之和(Two Sum)— 哈希表经典题解(C语言)
数据结构·c++·算法·leetcode
毕设源码-邱学长14 分钟前
【开题答辩全过程】以 胡小楼行政村农用灌溉机井预约管理系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
我头发还没掉光~16 分钟前
P1027 [NOIP 2001 提高组] Car 的旅行路线
c++·算法
JTCC17 分钟前
Java 设计模式西游篇 - 第五回:装饰者模式添法力 悟空披挂新战袍
java·观察者模式·设计模式
zh_xuan24 分钟前
go语言常用语法
开发语言·golang
lichenyang45325 分钟前
虚拟 DOM、Diff 算法与 Fiber
前端·javascript·面试
xiaoye370830 分钟前
哪些因素会影响Spring Bean的线程安全?
java·spring