[Ruby学习总结]Ruby中的类
来源:互联网 发布:abb机器人编程调试 编辑:程序博客网 时间:2024/05/18 01:17
1、类名的定义以大写字母开头,单词首字母大写,不用"_"分隔
2、实例化对象的时候调用new方法,实际上调用的是类里边的initialize方法,是ruby类的初始化方法,功能等同于Java中的构造方法
class Person def initialize(name, gender, age) @name = name @gender = gender @age = age endend3、可以使用attr_accessor关键字标记实例变量,为其提供读写方法,类似java中的get&set方法,如定义个最简单的model对象:
class Person attr_accessor :name, :gender, :ageend等同于:
class Person def name @name end def name=(name) @name=name end def gender @gender end def gender=(gender) @gender=gender end def age @age end def age=(age) @age=age endend可见,使用了attr_accessor关键字,可以使代码更简洁易懂,此外,ruby中还提供读写分开的关键字:attr_writer(只写)、attr_reader(只读)。
4、Ruby中没有接口,但是有更神奇的Module和Mix-in机制,注意:module中的静态方法只能通过模块名访问,实例方法只能通过include到类中,然后通过类的实例访问。
module Foo PI = 3.14 def m1 puts 'Put out from m1!' end def Foo.m2 puts 'Put out from m2!' end class Fooc def mfc puts 'Put out from Foo>>Fooc!' end end module Foos def mfs puts 'Put out from Foo>>Foos' end endend#通过module名访问,只能访问类一级的内容puts Foo::PI.to_s #输出:3.14Foo::Fooc.new.mfc #输出:Put out from Foo>>Fooc!!#Foo.m1 #无法访问,没有实例化Foo.m2 #静态方法通过模块名访问#引入后访问include Foom1 #输出:Put out from m1!Fooc.new.mfc #输出:Put out from Foo>>Fooc!!include Foosmfs #输出:Put out from Foo>>Foos!可以来看看Module在实在应用中是怎么使用的:
#鸭子类class Duck def swim print self.class , " can swim...\n"; endend#"会飞的"模块module FlyModule def fly print " and I can fly...\n" endend#野鸭(会飞,会游)class Mallard < Duck include FlyModule #导入模块后,该类即具有模块中定义的方法(可以理解为实现了接口)end#家鸭(只会游泳)class Coot < Duckendm = Mallard.newm.swimm.flyc1 = Coot.newc1.swim#c1.fly #无法调用,报错提示未定义#module中定义的方法也可以在实例中动态扩展c2 = Coot.newc2.extend(FlyModule) #扩展c2对象引入FlyModule模块c2.swimc2.fly
- [Ruby学习总结]Ruby中的类
- [Ruby学习总结]Ruby中的类
- [Ruby学习总结]Ruby中的类
- [Ruby学习总结]Ruby中的变量
- [Ruby学习总结]Ruby中的方法
- [Ruby学习总结]Ruby中的String
- [Ruby学习总结]Ruby中的数组
- [Ruby学习总结]Ruby中的Range
- Ruby学习入门教程总结
- Ruby学习总结
- [Ruby学习总结]Ruby语言的语法
- Ruby中的类模型学习笔记
- ruby学习笔记 类中的变量
- Ruby中的类编程
- Ruby学习-Ruby类的使用
- 初次学习RUBY的总结
- Ruby中变量学习总结
- ruby总结
- PKU3013(Big Christmas Tree)-最短路径-SPFA
- 动态规划求解最长公共子串
- GDB 详解
- LeetCode - Same Tree
- 局域网内配置路由器(包括无线功能)
- [Ruby学习总结]Ruby中的类
- SQL(一) cursor用法
- struts2 中action返回的类型
- lua编译
- Ubuntu下配置samba实现文件夹共享
- 发人深省的21个故事
- 面试题之中位数的应用POJ1723
- k均值聚类
- 由int i和int i=new int()想到的