`
酷的飞上天空
  • 浏览: 521782 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

ruby的OOP学习

阅读更多

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教程

    通过"learn_oop_ruby:启动School Ruby OOP教程",学习者可以深入理解这些概念,并通过实践编写代码来增强理解。这个教程可能包含一系列逐步的练习,从简单的类定义开始,逐渐引导学习者了解更复杂的OOP机制,如继承...

    prototype_oop_javascript_ruby_prototype_

    标题 "prototype_oop_javascript_ruby_prototype_" 暗示了我们将探讨的是关于原型(Prototype)面向对象编程(Object-Oriented Programming, OOP)的概念,主要关注JavaScript和Ruby这两种语言之间的相似性和差异性...

    Ruby的学习和应用

    1. **面向对象编程(OOP)**:Ruby的核心是它的面向对象特性。每个数据类型,包括基本类型如整数、字符串和布尔值,都是对象。类是创建对象的蓝图,它们定义了对象的属性(或称为实例变量)和行为(方法)。Ruby还...

    ruby 经典教程从新手到专家

    - **面向对象编程(OOP)**:详细解释Ruby中的类、对象、继承、封装、多态等OOP核心概念。 - **程序结构**:探讨模块、混合和命名空间,如何组织大型Ruby项目。 #### 第二部分:进阶技巧 - **元编程**:讲解Ruby的元...

    Ruby语言入门教程v1.0

    《Ruby语言入门教程v1.0》是一份详尽的指南,旨在为初学者提供一个易于理解的Ruby语言学习路径。下面,我们将深入探讨该教程所涵盖的关键知识点,特别是其标题和描述中提及的核心概念。 ### 1. 编程语言的发展简史 ...

    From Java to Ruby

    总的来说,从Java转向Ruby不仅涉及技术层面的学习,也包括思维方式的转变。Ruby提供了一个更为简洁和动态的编程模型,能够提升开发效率并激发创新。对于希望拓宽视野和提升编程技能的Java开发者来说,这是一个值得...

    Ruby-RubyChina社区的精华帖

    RubyChina社区是中国 Ruby 开发者的重要聚集地,它提供了丰富的资源、讨论和问题解答,帮助开发者提升技能并互相学习。这个名为"awesome-ruby-china-master"的压缩包很可能是该社区精华内容的集合,包含了关于Ruby...

    【学习 Ruby】.pdf

    要开始学习 Ruby,你需要一个兼容的计算机系统,至少 2GB RAM(推荐 4GB),以及 Ruby 的安装包。Ruby 可以在官方网站下载,同时可能需要配置环境变量,确保 Ruby 和相关工具如 gem(Ruby 的包管理器)能正常工作。...

    Ruby脚本语言经典教程.pdf

    1. **面向对象编程(OOP)**:Ruby是一种纯面向对象的编程语言。这意味着在Ruby中,几乎任何事物都是对象,包括数字和字符串。Ruby中的面向对象编程可以让你以直观的方式编写代码,通过继承、封装、多态和抽象等概念...

    eloquent ruby

    《Eloquent Ruby》是一本深受Ruby开发者喜爱的书籍,作者Russ Olsen通过本书为读者提供了一条清晰的学习路径,不仅适用于初学者,也适合那些已经有一定经验的Ruby开发者。本书在Ruby社区中获得了极高的评价,被认为...

    ruby入门到精通

    4. **面向对象编程(OOP)**:Ruby是一种纯面向对象的语言,所有一切都是对象,包括基本类型。学习类、对象、继承、封装和多态等概念,对于深入理解Ruby至关重要。 5. **块、proc和lambda**:Ruby中的块、Proc对象...

    一些高质量的学习Ruby的资源清单.zip

    2. **面向对象编程(OOP)**:Ruby的核心是面向对象,理解类、对象、继承、模块和 Mixin 是至关重要的。你需要学习如何创建和使用类,以及如何利用继承来实现代码复用。 3. **块、proc 和 lambda**:Ruby 中的块是...

    ruby入门练习题.zip

    2. **面向对象编程(OOP)**:Ruby的核心就是面向对象,它几乎一切都是对象,包括基本的数据类型如整数、字符串和布尔值。类是创建对象的蓝图,对象则是类的实例。Ruby支持类、继承、封装、多态等OOP概念。 3. **类...

    Ruby 语言教程从小白到入门

    总的来说,通过这个“Ruby 语言教程从小白到入门”的学习,你将能够掌握Ruby的基础知识,包括语法、面向对象编程、异常处理、标准库的使用等。随着对Ruby理解的深入,你将能够编写出更高效、更优雅的代码,进一步...

    Ruby语言教程.docx

    - **多种编程范式支持**:Ruby支持多种编程风格,包括面向对象编程(OOP)、函数式编程和过程化编程等。 #### 三、Ruby语言历史 - **开发背景**:Ruby的开发受到了Perl、Smalltalk、Eiffel和Lisp等语言的影响。 - **...

    ruby笔记2ruby笔记2ruby笔记2

    理解类、对象、继承、封装和多态是学习Ruby OOP的基础。 2. **语法结构**:Ruby的语法简洁明了,如变量定义(`$global`, `@instance`, `@@class`, `local`),条件语句(`if/else`, `unless`, `case`),循环(`for...

    [Ruby完全自学手册].邓蔚.扫描版

    接下来,书中会详细讲解Ruby的面向对象编程(OOP)特性。Ruby是一种纯面向对象的语言,万物皆对象,类和对象是其核心概念。读者将学习如何定义类,创建和操作对象,理解继承、封装和多态等概念。此外,还会涉及模块...

    Head First Ruby 英语原版

    - **灵活性**:Ruby支持多种编程范式,如面向对象编程(OOP)、函数式编程等。 - **社区支持**:拥有庞大的开发者社区,提供了大量的库和框架支持。 ##### 2. 书籍内容概览 - **第一章**:介绍Ruby的基础概念,...

    Ruby程序设计资料大全

    在“Ruby程序设计资料大全”中,我们可以深入学习这个语言的核心概念和应用技巧。Ruby 1.9.1是Ruby 1.9系列的重要里程碑,它带来了许多性能提升和语法改进,使得开发效率和代码可读性进一步提升。 1. **Ruby的基本...

Global site tag (gtag.js) - Google Analytics