ruby的所有类都继承自object,而object又继承自BasicObject(此类为ruby1.9新增)
类的定义
定义类使用关键字class,定义方法使用def,
例子:
class MyClass
#定义类方法
def self.method1
puts "类方法mothod1"
end
#另一种方式定义类方法
def MyClass.method2
puts "另一种定义的类方法method2"
end
#定义实例方法
def method3
puts "实例方法method3"
end
end
myclass = MyClass.new
MyClass.method1
MyClass.method
myclass.method
类方法相当于java中的静态方法,无须实例化可直接调用.但不能被实例化后的对象调用
定义属性又4个方法,attr,attr_reader,attr_writer,attr_accessor,他们的作用分别是只读或或可读属性,只读属性,只写属性,可读写属性,他们属于Module类的方法.
例子:
class MyClass
attr_accessor :attr1
def attr2
@attr2
end
def set_attr2(value)
@attr2 = value
end
end
myclass = MyClass.new
myclass.attr1="attr1"
puts myclass.attr1
myclass.set_attr2("attr2")
puts myclass.attr2
访问控制
ruby提供三个关键字,public,protected,private.其中ruby默认的级别是public即没有任何限制.
protected级别的方法只能被该类自身和其子类的对象
所调用
private级别的方法只能被self调用,换句话来说就是只能被其自身和子类自身的方法的调用.
例子:
class MyClass
#默认是public
def public_method
puts "public_method"
end
#定义protected方法
protected
def protected_method
puts "protected_method"
end
#定义private方法
private
def private_method
puts "private_method"
end
end
class MySubClass<MyClass
#调用父类中的protected方法
def call_protected_method
protected_method
end
#调用父类的private方法
def call_private_method
private_method
end
end
my_sub_class = MySubClass.new
my_sub_class.call_protected_method
my_sub_class.call_private_meth
类的扩展和继承
通过代码
puts 1.class.name
可知
1是Fixnum的一个实例,下面就对Fixnum进行扩展
class Fixnum
def speak
puts "我的值是#{self}"
end
def abs
puts "abs不能用了"
end
end
#扩展类方法
def Fixnum.say_hello
puts "Hello!"
end
1.speak
-1.abs
Fixnum.say_hello
输出
我的值是1
abs不能用了
Hello!
self和super
ruby中的self用来引用自身,和java中的this功能相似.super关键字则用来引用父类的相同方法
例子:
class Person
attr_accessor :name,:age
def say_hello
puts "你好,我是#{self.name}"
end
def say_age
puts "我的年龄是#{self.age}"
end
end
class Man<Person
def sex
"男"
end
def say_sex
puts "我的性别是#{self.sex}"
end
def say_hello
super
say_age
say_sex
end
end
man = Man.new
man.age=20
man.name="jone"
man.say_hello
输出:
你好,我是jone
我的年龄是20
我的性别是男
ruby的构造方法initialize和给对象创建属于对象的方法
class Man
attr_accessor :myname,:myage
#类的构造方法
def initialize(name,age)
@myname = name
@myage = age
end
end
@myname = "test"
@myage = 10
me = Man.new("jack", 30)
#为对象定义方法
def me.about_me
puts "我叫#{self.myname},年龄是#{self.myage}"
end
me.about_me
最后再说下ruby的==和equal?
对于数值形来说这两个貌似没什么区别
对于字符串来说
==比较的是字符串是否相同
equal?比较的是是否是同一个字符此
如:
a="123"
b="123"
a==b 返回true
a.equal? b 返回false
分享到:
相关推荐
通过"learn_oop_ruby:启动School Ruby OOP教程",学习者可以深入理解这些概念,并通过实践编写代码来增强理解。这个教程可能包含一系列逐步的练习,从简单的类定义开始,逐渐引导学习者了解更复杂的OOP机制,如继承...
标题 "prototype_oop_javascript_ruby_prototype_" 暗示了我们将探讨的是关于原型(Prototype)面向对象编程(Object-Oriented Programming, OOP)的概念,主要关注JavaScript和Ruby这两种语言之间的相似性和差异性...
1. **面向对象编程(OOP)**:Ruby的核心是它的面向对象特性。每个数据类型,包括基本类型如整数、字符串和布尔值,都是对象。类是创建对象的蓝图,它们定义了对象的属性(或称为实例变量)和行为(方法)。Ruby还...
- **面向对象编程(OOP)**:详细解释Ruby中的类、对象、继承、封装、多态等OOP核心概念。 - **程序结构**:探讨模块、混合和命名空间,如何组织大型Ruby项目。 #### 第二部分:进阶技巧 - **元编程**:讲解Ruby的元...
《Ruby语言入门教程v1.0》是一份详尽的指南,旨在为初学者提供一个易于理解的Ruby语言学习路径。下面,我们将深入探讨该教程所涵盖的关键知识点,特别是其标题和描述中提及的核心概念。 ### 1. 编程语言的发展简史 ...
总的来说,从Java转向Ruby不仅涉及技术层面的学习,也包括思维方式的转变。Ruby提供了一个更为简洁和动态的编程模型,能够提升开发效率并激发创新。对于希望拓宽视野和提升编程技能的Java开发者来说,这是一个值得...
RubyChina社区是中国 Ruby 开发者的重要聚集地,它提供了丰富的资源、讨论和问题解答,帮助开发者提升技能并互相学习。这个名为"awesome-ruby-china-master"的压缩包很可能是该社区精华内容的集合,包含了关于Ruby...
要开始学习 Ruby,你需要一个兼容的计算机系统,至少 2GB RAM(推荐 4GB),以及 Ruby 的安装包。Ruby 可以在官方网站下载,同时可能需要配置环境变量,确保 Ruby 和相关工具如 gem(Ruby 的包管理器)能正常工作。...
1. **面向对象编程(OOP)**:Ruby是一种纯面向对象的编程语言。这意味着在Ruby中,几乎任何事物都是对象,包括数字和字符串。Ruby中的面向对象编程可以让你以直观的方式编写代码,通过继承、封装、多态和抽象等概念...
《Eloquent Ruby》是一本深受Ruby开发者喜爱的书籍,作者Russ Olsen通过本书为读者提供了一条清晰的学习路径,不仅适用于初学者,也适合那些已经有一定经验的Ruby开发者。本书在Ruby社区中获得了极高的评价,被认为...
4. **面向对象编程(OOP)**:Ruby是一种纯面向对象的语言,所有一切都是对象,包括基本类型。学习类、对象、继承、封装和多态等概念,对于深入理解Ruby至关重要。 5. **块、proc和lambda**:Ruby中的块、Proc对象...
2. **面向对象编程(OOP)**:Ruby的核心是面向对象,理解类、对象、继承、模块和 Mixin 是至关重要的。你需要学习如何创建和使用类,以及如何利用继承来实现代码复用。 3. **块、proc 和 lambda**:Ruby 中的块是...
2. **面向对象编程(OOP)**:Ruby的核心就是面向对象,它几乎一切都是对象,包括基本的数据类型如整数、字符串和布尔值。类是创建对象的蓝图,对象则是类的实例。Ruby支持类、继承、封装、多态等OOP概念。 3. **类...
总的来说,通过这个“Ruby 语言教程从小白到入门”的学习,你将能够掌握Ruby的基础知识,包括语法、面向对象编程、异常处理、标准库的使用等。随着对Ruby理解的深入,你将能够编写出更高效、更优雅的代码,进一步...
- **多种编程范式支持**:Ruby支持多种编程风格,包括面向对象编程(OOP)、函数式编程和过程化编程等。 #### 三、Ruby语言历史 - **开发背景**:Ruby的开发受到了Perl、Smalltalk、Eiffel和Lisp等语言的影响。 - **...
理解类、对象、继承、封装和多态是学习Ruby OOP的基础。 2. **语法结构**:Ruby的语法简洁明了,如变量定义(`$global`, `@instance`, `@@class`, `local`),条件语句(`if/else`, `unless`, `case`),循环(`for...
接下来,书中会详细讲解Ruby的面向对象编程(OOP)特性。Ruby是一种纯面向对象的语言,万物皆对象,类和对象是其核心概念。读者将学习如何定义类,创建和操作对象,理解继承、封装和多态等概念。此外,还会涉及模块...
- **灵活性**:Ruby支持多种编程范式,如面向对象编程(OOP)、函数式编程等。 - **社区支持**:拥有庞大的开发者社区,提供了大量的库和框架支持。 ##### 2. 书籍内容概览 - **第一章**:介绍Ruby的基础概念,...
在“Ruby程序设计资料大全”中,我们可以深入学习这个语言的核心概念和应用技巧。Ruby 1.9.1是Ruby 1.9系列的重要里程碑,它带来了许多性能提升和语法改进,使得开发效率和代码可读性进一步提升。 1. **Ruby的基本...