当前位置: 首页 > news >正文

(delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)

8.5.2 封闭类和Final方法

如前所述,Java 采用非常动态的方法,默认情况下采用延迟绑定(或虚函数)。因此,Java 语言引入了一些概念,如不能继承的类(封闭类)和不能在派生类中覆盖的方法(final方法或非虚拟方法)。

封闭类是指不能进一步继承的类。如果您要发布组件(不含源代码)或运行时包,并希望限制其他开发人员修改您代码的能力,这样做可能会有意义。最初的目标之一也是为了提高运行时的安全性,这在完全编译的语言(如 Object Pascal)中一般是不需要的。

final方法是虚方法,您在继承类中无法进一步覆盖。同样,虽然它们在 Java 中是有意义的(在 Java 中,所有方法默认都是虚方法,而final方法得到了显著优化),但在 C# 中却被采用了,因为在 C# 中,虚函数是显式标记的,其重要性要低得多。同样,它们也被添加到 Object Pascal 中,但在该语言中很少使用。

就语法而言,这是一个封闭类的代码:

typeTDeriv1 = class sealed(TBase)procedure A; override;end;

尝试从中继承会导致错误,“无法扩展封闭类TDeriv1(Cannot extend sealed class TDeriv1)”。这是最终方法的代码:

typeTDeriv2 = class(TBase)procedure A; override; final;end;

从这个类继承并覆盖A方法会导致编译器错误,“无法覆盖最终方法(Cannot override a final method)”。

相关文章:

  • 55555555555555
  • 自动化运维(四)第一个Ansible任务
  • MySQL中 in 和 exists 区别
  • Springboot集成knife4j (swagger)
  • 突破!AI机器人拥有嗅觉!仿生嗅觉芯片研究登上Nature子刊
  • STC89C51学习笔记(二)
  • Flutter-发布插件到pub上传不上问题
  • RedisDesktopManager 安装
  • 网络基础二——TCP可靠性实现机制补充
  • Composer常见错误及解决方法
  • 金融中的数学知识
  • 内部类(InnerClass) 总结
  • 计算机网络-从输入网址到访问网站的全过程
  • 金融数据_PySpark-3.0.3随机森林(RandomForestClassifier)实例
  • AI大模型与网球运动结合的应用场景及案例分析
  • Electron入门介绍
  • leetcode-27. Remove Element
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Python3爬取英雄联盟英雄皮肤大图
  • Python学习之路13-记分
  • SOFAMosn配置模型
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 大快搜索数据爬虫技术实例安装教学篇
  • 坑!为什么View.startAnimation不起作用?
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 巧用 TypeScript (一)
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据仓库的几种建模方法
  • 学习Vue.js的五个小例子
  • 自制字幕遮挡器
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (循环依赖问题)学习spring的第九天
  • (转)Unity3DUnity3D在android下调试
  • (转载)Linux网络编程入门
  • .NET 8.0 发布到 IIS
  • .Net 代码性能 - (1)
  • .net 发送邮件
  • .NET运行机制
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [20161101]rman备份与数据文件变化7.txt
  • [Codeforces] probabilities (R1600) Part.1
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [IE技巧] 如何关闭Windows Server版IE的安全限制
  • [Java、Android面试]_10_Java中==与equal()方法的区别?重写equal()方法?
  • [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]
  • [Nginx]反向代理Node将3000端口访问转换成80端口
  • [oeasy]python0002_终端_CLI_GUI_编程环境_游戏_真实_元宇宙
  • [p4] Uncheckout other user‘s file?
  • [THUWC 2017]在美妙的数学王国中畅游