Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16497483
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:34:08

下载本文示例代码
  象大多数面向对象语言一样,Ruby类也允许定义类变量和方法。一个类变量允许在一个类的所有实例间共享单个变量。在Ruby中,两个@@号用于指示类变量。例如,如果你想要使一个BankAccount类的所有实例共享相同的利息率,那么该类可能被如下定义: class BankAccount@@interestRate = 6.5def BankAccount.getInterestRate()@@interestRateendattr_accessor :balance def initialize (bal)@balance = balendend  如你所见,类变量必须在使用前初始化,并且就象实例变量一样,如果你想存取类变量的话,你需要编写存取器方法。在此,我定义了一个类方法来返回利息率。注意,类名和在getInterestRate前面的句号表示一个类方法。一个类方法,不管对于任何实例,其工作方式都是相同的-在此,是把相同的利息率返回到所有的BankAccount实例。为了调用类方法,你需要使用类名,就象它使用于类方法定义中一样: irb(main):045:0> BankAccount.getInterestRate=> 6.5  事实上,用于创建类实例的"new"方法就是一个类方法。因此,当你在程序中输入"Rectangle.new"时,你实际在调用new类方法-这是Ruby默认情况下所提供的。  继承  面向对象编程的原则之一是支持类层次结构。就象自然界中的事物分类一样,类允许从更为通用的类进行继承。面向对象编程的特征主要体现在方法和变量的使用上。例如,一个Square类继承Rectangle类的一些特征,如方法和变量。一个Square是一种更具体类型的Rectangle(高度和宽度相等的Rectangle实例),但是它仍然有一个高度和宽度,也有一个面积(而且与矩形的计算方法相同)。在Ruby中,Square类可以使用下列定义创建: class Square < Rectangleend  " feel?=> "I feel fine."  此方法看似另外一种语言(如C)中的函数或过程。事实上,尽管这些方法看上去好象不属于任何类,但是这些方法却都是你已经添加到Object类上的方法,它(因为Object是所有类的超类)反过来也把这一方法添加到你的继承类上。因此,现在你可以在任何对象(如Square和Rectangle的实例)甚至一个类(如Rectangle类)上调用这个方法。 irb(main):043:0> sq1=Square.new(4)=> #irb(main):044:0> rect1=Rectangle.new(5,7)=> #irb(main):045:0> sq1.feel?=> "I feel fine."irb(main):046:0> rect1.feel?=> "I feel fine."irb(main):047:0> Rectangle.feel?=> "I feel fine."   象大多数面向对象语言一样,Ruby类也允许定义类变量和方法。一个类变量允许在一个类的所有实例间共享单个变量。在Ruby中,两个@@号用于指示类变量。例如,如果你想要使一个BankAccount类的所有实例共享相同的利息率,那么该类可能被如下定义: class BankAccount@@interestRate = 6.5def BankAccount.getInterestRate()@@interestRateendattr_accessor :balance def initialize (bal)@balance = balendend  如你所见,类变量必须在使用前初始化,并且就象实例变量一样,如果你想存取类变量的话,你需要编写存取器方法。在此,我定义了一个类方法来返回利息率。注意,类名和在getInterestRate前面的句号表示一个类方法。一个类方法,不管对于任何实例,其工作方式都是相同的-在此,是把相同的利息率返回到所有的BankAccount实例。为了调用类方法,你需要使用类名,就象它使用于类方法定义中一样: irb(main):045:0> BankAccount.getInterestRate=> 6.5  事实上,用于创建类实例的"new"方法就是一个类方法。因此,当你在程序中输入"Rectangle.new"时,你实际在调用new类方法-这是Ruby默认情况下所提供的。  继承  面向对象编程的原则之一是支持类层次结构。就象自然界中的事物分类一样,类允许从更为通用的类进行继承。面向对象编程的特征主要体现在方法和变量的使用上。例如,一个Square类继承Rectangle类的一些特征,如方法和变量。一个Square是一种更具体类型的Rectangle(高度和宽度相等的Rectangle实例),但是它仍然有一个高度和宽度,也有一个面积(而且与矩形的计算方法相同)。在Ruby中,Square类可以使用下列定义创建: class Square < Rectangleend  " feel?=> "I feel fine."  此方法看似另外一种语言(如C)中的函数或过程。事实上,尽管这些方法看上去好象不属于任何类,但是这些方法却都是你已经添加到Object类上的方法,它(因为Object是所有类的超类)反过来也把这一方法添加到你的继承类上。因此,现在你可以在任何对象(如Square和Rectangle的实例)甚至一个类(如Rectangle类)上调用这个方法。 irb(main):043:0> sq1=Square.new(4)=> #irb(main):044:0> rect1=Rectangle.new(5,7)=> #irb(main):045:0> sq1.feel?=> "I feel fine."irb(main):046:0> rect1.feel?=> "I feel fine."irb(main):047:0> Rectangle.feel?=> "I feel fine." 下载本文示例代码


Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法Ruby程序快速入门之类变量和类方法
阅读(430) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~