1.":class, instance_of?, :is_a?"都是Object类的方法,每个对象都可以调用
2.":class"方法用户获取对象归属类的名称
3.":instance_of?"方法用于判断对象是否为某个类的实例
4.":is_a?"方法用于判断,对象在继承层次上是否归属于某一个类
5.BasicObject是Object类的父类,Object类是所有不直接继承自BasicObject类的父类。
6.所有类默认继承自Object类,要直接继承BasicObject类,需要显示写明
7.调用一个类的new方法,其initialize方法就会被调用。
8.类名首字母必须大写
9.存取器 attr_reader,attr_write,attr_accessor
10.self表示对象本身
11.类方法定义语法
     a.class << 类名   ~ end
     b.class <<self ~ end
     c. def 类名.方法名 ~end
12.类变量"@@name",类方法定义   def classname.funcname ~ end

 

13.访问控制  public,private,protected
     public :name1,:name2,:name3
     或者 public
                 def f1 ~ end
                 def f2 ~ end
                 def f3 ~ end

 

默认情况下方法都被定义为public,但是initialeze方法会默认定义为private

 

14.类外部可读,内部才可写的变量定义方法
     attr_accessor :x,:y
     protected :x=,:y=

 

15.可以在已有类上进行扩展

 

class 已有类名
           def newMethod
           end
     end

 

16.在子类调用同名父类   super(paramlist)
17.instance_methods 打印类的实例方法
18.alias 别名 原名  
     alias :别名 :原名   定义别名
19 undef可以删除父类的方法
20 定义实例方法

 

a=A.new
     def a.func
     end
     a.func

 
 
 
 

class TestClassMethod
     @@cnt=0
     def TestClassMethod.count
          @@cnt+=1
     end
end

 

puts TestClassMethod.count
puts TestClassMethod.count

 
 

class A
     def func1
          puts "A#func1 is Called"
     end
end

 

class B < A
     @@count=0
     def func2
          puts "B#func2 is Called"
     end
end

 

class << B
     def incCnt
          puts "hello"
     end
end

 

b = B.new
puts b.instance_of?(A)  =>false   #直属查找
puts b.is_a?(B)             =>true
puts b.is_a?(A)            =>true   #继承层次上查找

 
 

str1="luocaimin"
str2="luocaimin"

 

def str2.hello
     puts "Hello #{self}"
end
p str2.hello
p str1.hello

 

class C1
     def hello
          puts "hello"
     end
end

 

class C2<C1
     alias old_hello hello     #把父类的同名方法定义为别名
     def hello
          puts "#{old_hello},again"  #使用别名
     end
end

 

c = C2.new
c.old_hello
c.hello

 
 
 

class String
     def count_word
          self.split(/\s+/)
     end
end

 

str = "Today is wonderful day"
arr = str.count_word
puts arr.size

 

class RingArray < Array
     def [](i)
          index=i%size
          super(index)
     end
end

 

ra = RingArray[1,2,3,4,5,6,7,8,9]
p ra[11]
p ra[21]

 

p Object.instance_methods
p BasicObject.instance_method

 
 

ruby 基础教程1-8-1的更多相关文章

  1. 1月10日 ruby基础教程,查漏补缺; 2月22日 Exception补充

    https://ruby-doc.org/core-2.5.0/Exception.html 1月20日练习完1,2章. 第一章 初探 ‘’单引号不执行转义符. \t 制表符.\n 换行符. p me ...

  2. Ruby基础教程

    一.Ruby基础知识 1.关于Ruby Ruby是脚本语言 Ruby是面向对象语言 Ruby是跨平台语言 Ruby是开放源码软件 2.Ruby入门书籍推荐 <Ruby.Programming向R ...

  3. Ruby 基础教程 第二部分 Ruby 的基础 第4章

    第二部分 Ruby 的基础 第4章~第6章 这一部分是 Ruby 编程需要遵守的规则. 第四章 对象,变量与常量 对象 & 类 对象的常见种类: 数值对象 字符串对象 数组.散列对象 正则表达 ...

  4. Ruby 基础教程 第一部分总结

    第一部分:Ruby 初体验 第一章: Ruby 初探 前言 开头的这一章节讲了一些十分基础的内容,重要的几个话题有: ruby 命令的执行方法 对象.方法的概念 常见的打印方法 ruby 命令的执行方 ...

  5. Ruby 基础教程1-5

    1.条件语句 if unless case        unless和if相反,条件不成立则执行   2.条件  除了 false和nil 其他都是true   3.unless 语法        ...

  6. Ruby 基础教程1-4

    1.对象 数值对象 字符串对象 数组对象,散列对象 正则表达式对象 时间对象 文件对象 符号对象 2.类 Numeric String Array Hash Regexp File Symbol 3. ...

  7. Ruby 基础教程 1-1

    1.指定编码方式       第一种 在代码文件首行通过 #encoding:GBK的方式     第二种  ruby -E UTF-8 文件名称     第三种  irb  -E UTF-8   2 ...

  8. Ruby基础教程 1-10

    类结构 1.数值类结构     Fixnum到Bignum会自动转换   2.常用数值表示   3. ans=10.divmod(3) ans[0]是商  ans[1]是余数   4.实例方法roun ...

  9. Ruby 基础教程1-9

    异常 1.异常结构      [ begin]          ...     rescue         [retry]          ...     [ensure]          . ...

随机推荐

  1. 【[SCOI2008]奖励关】

    又抄了一篇题解 要凉了要凉了,开学了我还什么都不会 文化课凉凉,NOIP还要面临爆零退役的历史进程 这道题挺神的,期望+状态压缩 我们设\(dp[i][S]\)表示在第\(i\)天前,捡的宝物状态为\ ...

  2. Myeclipse 自带Tomcat启动8080端口占用

    在启动Myeclipse自带的Tomcat发现报错,显示8080端口被占用 第一步:window+r 组合键,调出命令窗口. 第二步:输出命令:netstat -ano|findstr 8080   ...

  3. div拖动

    <!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head> <meta ...

  4. 【题解】洛谷P2023 [AHOI2009] 维护序列(线段树)

    洛谷P2023:https://www.luogu.org/problemnew/show/P2023 思路 需要2个Lazy-Tag 一个表示加的 一个表示乘的 需要先计算乘法 再计算加法 来自你谷 ...

  5. POJ 1949 Chores (很难想到的dp)

    传送门: http://poj.org/problem?id=1949 Chores Time Limit: 3000MS   Memory Limit: 30000K Total Submissio ...

  6. STM32的备份寄存器和控制状态寄存器

    STM32的备份寄存器和控制状态寄存器 1 备份寄存器用于RTC时钟 RTC时钟可以在掉电以后继续计数,保证时间的延续,但是重新上电以后需要配置,保证之前的计数不会被清除,可以借助备份寄存器实现,备份 ...

  7. 设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的类型、URL、method、body、timestamp 等信息。

    异步请求逻辑注入 工作中我们需要对异步请求的请求信息打印日志,但是又不能耦合在业务代码中打印.请设计一个方法injectBeforeAsyncSend,能够实现如下功能:在发起异步请求之前打印出请求的 ...

  8. Knowledge Point 20180303 详解main函数

    学习Java的朋友想来都是从HelloWorld学起的,那么想来都对main函数不陌生了,但是main函数究竟是怎么回事呢?main函数中的参数是做什么的呢?main函数为什么能作为程序的入口呢?可不 ...

  9. Webstorm设置代码提示

    下载路径: https://github.com/virtoolswebplayer/ReactNative-LiveTemplate 本插件可以配合Webstorm设置代码提示. Mac下安装 We ...

  10. LeetCode 中级 - 救生艇(105)

    第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...