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

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

相关推荐
ESDWAN7 分钟前
跨境网络频繁掉线怎么排查?从企业内网到 SD-WAN 链路的故障诊断
开发语言·网络·php
大鹏的NLP博客14 分钟前
C++ 内存安全的未来:从 Safety Profiles 到 Safe C++
c++·内存安全
程序员zgh24 分钟前
C++ erase() 函数用法
c语言·开发语言·c++·学习
小蒜学长38 分钟前
基于Java的公司采购系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·公司采购系统
lee_tianbai39 分钟前
Java SSM 电影票预定系统|完整前后端项目,开箱即用(源码分享)
java·开发语言·数据库
小坏讲微服务1 小时前
Spring Boot 4 新特性全解析:从上手到生产实战
java·spring boot·后端·架构·springboot4
砚底藏山河1 小时前
python量化入门:多周期数据对齐统一时间轴
java·数据库·python·金融·maven
集智飞行1 小时前
解决mavros2 ros2版本cpu占用高的问题
java·服务器·前端
All for pursuit.1 小时前
【并查集-2】399.除法求值
数据结构·c++·算法·leetcode
迪丽热爱1 小时前
一、C语言概述与程序结构
c语言·开发语言·算法