博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby学习之类
阅读量:5321 次
发布时间:2019-06-14

本文共 2312 字,大约阅读时间需要 7 分钟。

1.快速入门实例:

class Man    def initialize(name,age)        @name = name        @age = age    end    def sayname        puts @name    end    def sayage        puts @age    endendm = Man.new("jiqing",22)m.saynamem.sayageb = Man.new("zhangsan",9);b.saynameb.sayage

结果:

jiqing

22
zhangsan
9

说明:

构造函数initialize

普通函数sayname
普通函数sayage
用def作为函数的开头
end作为函数的结尾
实例化对象用类名.new()即可

2.继承,用>符号来实现继承

案例:

require 'iconv'class Man    def initialize(name,age)        @name = Iconv.conv('gbk', 'utf-8',name)        @age = age    end    def sayname        puts @name    end    def sayage        puts @age    endendclass Tianen

结果:

天恩

22
我爱妈妈!

说明:

love方法是继承来的方法

这里输入中文有乱码,解决方案为
引入类“iconv”
然后用其中的conv方法进行处理
Iconv.conv('gbk', 'utf-8',"我爱妈妈!")
最好在ruby中不要出现中文。

 

3.在子类中增强父类方法

用super方法

案例:

require 'iconv'class Man    def initialize(name,age)        @name = Iconv.conv('gbk', 'utf-8',name)        @age = age    end    def sayname        puts @name    end    def sayage        puts @age    endendclass Tianen

结果:

天恩

我爱妈妈!
22

说明:前两句都是从sayname方法中执行出来的。

4.单态方法,重写类方法

案例:

require 'iconv'class Man    def initialize(name,age)        @name = Iconv.conv('gbk', 'utf-8',name)        @age = age    end    def sayname        puts @name    end    def sayage        puts @age    endenda = Man.new("a",6)b = Man.new("b",7)# 单态方法def b.sayname    puts "bname"enda.saynamea.sayageb.saynameb.sayage

结果:

a

6
bname
7

说明:

修改之后,b对象吊用的方法输出的内容就变化了。

5.方法访问控制

在Ruby中,只有方法,没有函数,每一个方法都是存在于类中。如果不在任何类中定义方法,

那么这个方法属于哪个类呢?答案:Object类。Ruby将其实现为Object类的私有方法。

案例:

def my    puts "my love!"endmys = "good"s.my

结果:

my love!

然后报错了。对象s无法访问私有方法。

 

6.private、public关键字

案例:

class Man    def initialize(name,age)        @name = name        @age = age    end    private    def sayname        puts @name    end    def sayage        puts @age    end    public    def free        puts "i am public"    endendt = Man.new("tianen",22)t.freet.sayaget.sayname

结果:

第一个方法成功输出

第二个、第三个方法有问题

 

除了在方法之前设置其访问权限之外,还可以在方法定义之后设置

案例如下:

class Man    def initialize(name,age)        @name = name        @age = age    end    def sayname        puts @name    end    def sayage        puts @age    end    def free        puts "i am public"    end    public :free    private :sayname,:sayageendt = Man.new("tianen",22)t.freet.sayaget.sayname

效果同上

 

 

 

 

转载于:https://www.cnblogs.com/jiqing9006/archive/2013/03/26/2983602.html

你可能感兴趣的文章
使用命令创建数据库和表
查看>>
linux下Rtree的安装
查看>>
【转】redo与undo
查看>>
安卓当中的线程和每秒刷一次
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
标识符
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>