Object、Class、Module之间关系

news2024/10/7 15:24:05

文章目录

    • 1. 从继承关系来说,是Class --> Module --> Object,即Object是继承树的顶层,紧接着是Module,然后是Class。
    • 2. module 与Class 区别

1. 从继承关系来说,是Class --> Module --> Object,即Object是继承树的顶层,紧接着是Module,然后是Class。

irb的输出结果:

2.3.0 :008 > puts Object.superclass
BasicObject
 => nil 
2.3.0 :009 > puts Module.superclass 
Object
 => nil 
2.3.0 :010 > puts Class.superclass  
Module
 => nil 
2.3.0 :011 > puts Object.public_methods - Kernel.public_methods  
new
allocate
superclass
 => nil 

从上面的输出可以看出,Object中自己定义的方法只有"superclass" , “allocate"和"new"这三个方法,其余的方法,比如"class”, “to_s”, "object_id"等等都是在Kernel中实现的。

ruby中:

  • 在Ruby中使用Class来标识所有的数据类型,所有的变量和常量都是Object的子类
  • Kernel是Module,Object的实现中包含了Kernel

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

https://www.zhihu.com/question/19922190/answer/13359458

2. module 与Class 区别

一句话概括,就是: class可以实例化, module不可以, 别的都一样.
关于继承的一点区别:
class是使用<作为继承的关键字,只支持单继承.
module是使用include来做实例继承(实例化的时候动态功能插入),extend做类继承(可以理解为static继承).

module的应用场景:

作为namespace,里面放一般的const或者自己的class
作为工具模块,放通用方法,别的类里面直接include或者extend以后使用,也可以看成动态扩展业务类
可以作为抽象类,module里面提供默认实现,业务类include或者extend以后覆盖
作为接口来用,一个可用的接口库,module-interface

http://jingpin.jikexueyuan.com/article/58139.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我国目前常用的卫星影像星座有哪些(高分二号、高分七号、吉林一号、高景一号······)

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 中国目前的遥感卫星在数量、种类和应用领域上都取得了显著进展&#xff0c;覆盖了陆地、气象、海…

6月21日训练 (东北林业大学)(个人题解)

前言&#xff1a; 这次训练是大一大二一起参加的训练&#xff0c;总体来说难度是有的&#xff0c;我和队友在比赛时间内就写出了四道题&#xff0c;之后陆陆续续又补了了三道题&#xff0c;还有一道题看了学长题解后感觉有点超出我的能力范围了&#xff0c;就留给以后的自己吧。…

常见的七大排序

目录 前言 冒泡排序 选择排序 插入排序 堆排序 希尔排序 快排 归并排序 前言 本文介绍七种常见的排序方式&#xff1a;冒泡排序&#xff0c;选择排序&#xff0c;插入排序&#xff0c;堆排序&#xff0c;希尔排序&#xff0c;快排&#xff0c;归并排序 冒泡排序 将每2…

Day59 代码随想录打卡|二叉树篇---把二叉搜索树转换为累加树

题目&#xff08;leecode T538&#xff09;&#xff1a; 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加树&#xff08;Greater Sum Tree&#xff09;&#xff0c;使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。…

浅聊Cookie

前言 在客户端使用Nuxt的useFetch调用接口并存储cookie&#xff0c;发现一些趣事~ cookie存储需要遵守同源策略~ 理论我们是知道的&#xff0c;但具体是怎么一回事呢~ 实现 在Nuxt中是这样的~ 直接访问 Nuxt <template><div>{{ data }}</div> </te…

【chatgpt】train_split_test的random_state

在使用train_test_split函数划分数据集时&#xff0c;random_state参数用于控制随机数生成器的种子&#xff0c;以确保划分结果的可重复性。这样&#xff0c;无论你运行多少次代码&#xff0c;只要使用相同的random_state值&#xff0c;得到的训练集和测试集划分就会是一样的。…

Vision Pro的3D跟踪能力:B端应用的工作流、使用教程和经验总结

Vision Pro的最新3D跟踪能力为工业、文博、营销等多个B端领域带来了革命性的交互体验。本文将详细介绍这一功能的工作流、使用教程,并结合实际经验进行总结。 第一部分:工作流详解 一、对象扫描 使用Reality Composer iPhone应用程序对目标对象进行3D扫描,如吉他或雕塑,…

粉笔1000题——判断推理

目录 一、图形推理1. 位置规律平移旋转、翻转 二、定义判断三、类比推理四、逻辑判断 一、图形推理 1. 位置规律 平移 旋转、翻转 二、定义判断 三、类比推理 四、逻辑判断

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇PTH哈希PTT票据PTK密匙Kerberoast攻击点TGTNTLM爆破

红队内网攻防渗透 1. 内网横向移动1.1 首要知识点1.2 PTH1.2.1 利用思路第1种:利用直接的Hash传递1.2.1.1、Mimikatz1.2.2 利用思路第2种:利用hash转成ptt传递1.2.3 利用思路第3种:利用hash进行暴力猜解明文1.2.4 利用思路第4种:修改注册表重启进行获取明文1.3 PTT1.3.1、漏…

养殖自动化温控系统:现代养殖场的智能守护神

现代农业养殖业中&#xff0c;养殖自动化温控系统已经成为提高生产效率和保障动物福利的关键技术之一。本篇文章将深入介绍养殖自动化温控系统的原理、组成、优势及其在不同类型养殖场中的应用实例&#xff0c;并展望该技术的未来发展。 一、养殖自动化温控系统概述 养殖自动…

LabVIEW编程控制ABB机械臂

使用LabVIEW编程控制ABB机械臂是一项复杂但十分有价值的任务。通过LabVIEW&#xff0c;可以实现对机械臂的精确控制和监控&#xff0c;提升自动化水平和操作效率。 1. 项目规划和硬件选型 1.1 确定系统需求 运动控制&#xff1a;确定机械臂需要执行的任务&#xff0c;如抓取、…

易优cms内核简洁文章资讯作文范文网站模板源码(带手机版)

易优cms内核简洁文章资讯作文范文网站模板源码 带手机版 适用于博客、文章、资讯类网站使用 界面预览 易优cms内核简洁文章资讯作文范文网站模板源码

Python题目

实例 3.1 兔子繁殖问题&#xff08;斐波那契数列&#xff09; 兔子从出生后的第三个月开始&#xff0c;每月都会生一对兔子&#xff0c;小兔子成长到第三个月后也会生一对独自。初始有一对兔子&#xff0c;假如兔子都不死&#xff0c;那么计算并输出1-n个月兔子的数量 n int…

element-plus 表单组件 之element-form

elment-plus的表单组件的标签有el-form,el-form-item。 单个el-form标签内包裹若干个el-form-item,el-form-item包裹具体的表单组件&#xff0c;如输入框组件&#xff0c;多选组件&#xff0c;日期组件等。 el-form组件的主要作用是&#xff1a;提供统一的布局给其他表单组件&…

FPGA学习网站推荐

FPGA学习网站推荐 本文首发于公众号&#xff1a;FPGA开源工坊 引言 FPGA的学习主要分为以下两部分 语法领域内知识 做FPGA开发肯定要首先去学习相应的编程语言&#xff0c;FPGA开发目前在国内采用最多的就是使用Verilog做开发&#xff0c;其次还有一些遗留下来的项目会采用…

长亭谛听教程部署和详细教程

PPT 图片先挂着 挺概念的 谛听的能力 hw的时候可能会问你用过的安全产品能力能加分挺重要 溯源反制 反制很重要感觉很厉害 取证分析 诱捕牵制 其实就是蜜罐 有模板直接爬取某些网页模板进行伪装 部署要求 挺低的 对linux内核版本有要求 需要root 还有系统配置也要修改 …

leetcode刷题日记

题目描述 解题思路 基本思想&#xff0c;将数组复制一份&#xff0c;按照位置取余&#xff0c;确实做出来了&#xff0c;但是这样时间和空间上的资源比较多。看到切片法&#xff0c;感觉到很新&#xff0c;思路很好&#xff0c;用来记录。 代码 python class Solution:def ro…

springboot + Vue前后端项目(第十八记)

项目实战第十八记 写在前面1. 前台页面搭建&#xff08;Front.vue&#xff09;2. 路由3.改动登录页面Login.vue4. 前台主页面搭建Home.vue总结写在最后 写在前面 本篇主要讲解系统前台搭建&#xff0c;通常较大的项目都会搭建前台 1. 普通用户登录成功后前台页面效果&#xf…

Flutter 如何发布安卓应用?

android:hardwareAccelerated“true” android:windowSoftInputMode“adjustResize”> <meta-data android:name“flutterEmbedding” android:value“2” /> Flutter生成的文件建议是大部分内容可以保留不动&#xff0c;但是可以根据需要进行修改。 具体可能要修…

一款有趣的Python库绘制风向图,小白容易上手

利用 Python 绘制风向图 绘制风向图通常使用 matplotlib 库的 Barbs 类来实现.这个类用于绘制风向和风速的矢量场,可以实现不同的风向图风格. 安装 ## 命令安装 matplotlib 库&#xff1a;pip install matplotlib用法 下面是一个简单的示例代码,绘制风向图&#xff1a; 使…