[Ruby学习总结]Ruby中的类
来源:互联网 发布:淘宝商城夫妻用品 编辑:程序博客网 时间:2024/04/30 15:26
http://blog.csdn.net/tiger435/article/details/12011855
1、类名的定义以大写字母开头,单词首字母大写,不用"_"分隔
2、实例化对象的时候调用new方法,实际上调用的是类里边的initialize方法,是ruby类的初始化方法,功能等同于Java中的构造方法
- class Person
- def initialize(name, gender, age)
- @name = name
- @gender = gender
- @age = age
- end
- end
- class Person
- attr_accessor :name, :gender, :age
- end
- 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
- end
- end
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
- end
- end
- #通过module名访问,只能访问类一级的内容
- puts Foo::PI.to_s #输出:3.14
- Foo::Fooc.new.mfc #输出:Put out from Foo>>Fooc!!
- #Foo.m1 #无法访问,没有实例化
- Foo.m2 #静态方法通过模块名访问
- #引入后访问
- include Foo
- m1 #输出:Put out from m1!
- Fooc.new.mfc #输出:Put out from Foo>>Fooc!!
- include Foos
- mfs #输出:Put out from Foo>>Foos!
- #鸭子类
- class Duck
- def swim
- print self.class , " can swim...\n";
- end
- end
- #"会飞的"模块
- module FlyModule
- def fly
- print " and I can fly...\n"
- end
- end
- #野鸭(会飞,会游)
- class Mallard < Duck
- include FlyModule #导入模块后,该类即具有模块中定义的方法(可以理解为实现了接口)
- end
- #家鸭(只会游泳)
- class Coot < Duck
- end
- m = Mallard.new
- m.swim
- m.fly
- c1 = Coot.new
- c1.swim
- #c1.fly #无法调用,报错提示未定义
- #module中定义的方法也可以在实例中动态扩展
- c2 = Coot.new
- c2.extend(FlyModule) #扩展c2对象引入FlyModule模块
- c2.swim
- c2.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总结
- mvc3 小小班
- linux 记录锁的应用
- STL容器实现方式归纳
- C#透明按钮
- JavaScript学习笔记(08)之事件及事件处理【好文章分享】
- [Ruby学习总结]Ruby中的类
- it笔试题目(技术)
- HTML5表单教程之input新增加的URL类型与email类型应用
- android数据库操作(一)
- 事情
- windows下 php 导出数据到EXCEL表中
- sourceinsight 语法不显示高亮 symble无法跳转 不解析
- Redis系统性介绍
- 黑马程序员——IO流