Ruby 教程 之 Ruby 面向对象 7

简介: Ruby 面向对象

Ruby 教程 之 Ruby 面向对象 7

Ruby 面向对象

Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现。Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串、数字,甚至连 true 和 false 都是对象。类本身也是一个对象,是 Class 类的一个实例。本章将向您讲解所有与 Ruby 面向对象相关的主要功能。

类用于指定对象的形式,它结合了数据表示法和方法,把数据整理成一个整齐的包。类中的数据和方法被称为类的成员。

访问控制

Ruby 为您提供了三个级别的实例方法保护,分别是 public、private 或 protected。Ruby 不在实例和类变量上应用任何访问控制。

Public 方法: Public 方法可被任意对象调用。默认情况下,方法都是 public 的,除了 initialize 方法总是 private 的。
Private 方法: Private 方法不能从类外部访问或查看。只有类方法可以访问私有成员。
Protected 方法: Protected 方法只能被类及其子类的对象调用。访问也只能在类及其子类内部进行。
下面是一个简单的实例,演示了这三种修饰符的语法:

实例

!/usr/bin/ruby -w

定义类

class Box

构造器方法

def initialize(w,h)
@width, @height = w, h
end

实例方法默认是 public 的

def getArea
getWidth() * getHeight
end

定义 private 的访问器方法

def getWidth
@width
end
def getHeight
@height
end

make them private

private :getWidth, :getHeight

用于输出面积的实例方法

def printArea
@area = getWidth() * getHeight
puts "Big box area is : #@area"
end

让实例方法是 protected 的

protected :printArea
end

创建对象

box = Box.new(10, 20)

调用实例方法

a = box.getArea()
puts "Area of the box is : #{a}"

尝试调用 protected 的实例方法

box.printArea()

尝试一下 »
当上面的代码执行时,它会产生以下结果。在这里,第一种方法调用成功,但是第二方法会产生一个问题。

Area of the box is : 200
test.rb:42: protected method `printArea' called for #

(NoMethodError)

目录
相关文章
|
6月前
|
程序员 Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
程序员 Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby
|
6月前
|
Ruby