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

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

相关推荐
Remember_9931 分钟前
【数据结构】深入理解Map和Set:从搜索树到哈希表的完整解析
java·开发语言·数据结构·算法·leetcode·哈希算法·散列表
小楼v2 分钟前
消息队列的核心概念与应用(RabbitMQ快速入门)
java·后端·消息队列·rabbitmq·死信队列·交换机·安装步骤
浅念-2 分钟前
C++第一课
开发语言·c++·经验分享·笔记·学习·算法
Coding茶水间3 分钟前
基于深度学习的路面裂缝检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
charlie1145141916 分钟前
现代嵌入式C++教程:对象池(Object Pool)模式
开发语言·c++·学习·算法·嵌入式·现代c++·工程实践
小北方城市网6 分钟前
接口性能优化实战:从秒级到毫秒级
java·spring boot·redis·后端·python·性能优化
LcVong8 分钟前
基于C#实现斑马ZT411打印机TCP通讯与打印状态精准判定
网络·tcp/ip·c#
HABuo8 分钟前
【linux进程控制(三)】进程程序替换&自己实现一个bash解释器
linux·服务器·c语言·c++·ubuntu·centos·bash
小北方城市网8 分钟前
Redis 缓存设计与避坑实战:解决穿透 / 击穿 / 雪崩
java·大数据·数据库·redis·python·elasticsearch·缓存