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

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

相关推荐
FreeTinker10 分钟前
Java文件服务器的技术选型与实现路径:从嵌入式工具到企业级系统
java·服务器·开发语言
2501_9065651211 分钟前
小创 · 智能助手
开发语言·c#
汉克老师22 分钟前
CSP-J 初赛(以满分为目标):第十五课《结构体、排序与自定义比较——从“给数字排队”到“给一群人排队”》
c++·csp-j·小学生·学c++编程
ly768923 分钟前
Java 21 到 Java 26 新特性详解:虚拟线程、模式匹配、结构化并发、HTTP/3 与 AOT
java·jvm
benchmark_cc25 分钟前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源
Coodor29 分钟前
如何在web浏览器使用js操作CPU卡
开发语言·前端·javascript·cpu卡
我星期八休息41 分钟前
Linux I/O多路转接—epoll
java·linux·运维·服务器·开发语言·jvm·算法
学长毕业设计1 小时前
基于springboot的云南中草药知识普及管理网站的设计与开发(源码+文档+讲解视频)
java·spring boot·后端
大模型码小白1 小时前
AI 提示词专栏:使用系统指令(System Prompt)实现全局约束
java·大数据·运维·开发语言·人工智能·python·prompt