国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Ruby簡潔學習筆記(二):類繼承、屬性、類變量

2019-10-26 19:24:35
字體:
來源:轉載
供稿:網友

1.如何聲明一個子類
代碼如下:
class Treasure < Thing

這樣Thing類中的屬性name,description都被Treasure繼承

2.以下三種方式傳入父類initialize方法的參數分別是什么?
代碼如下:
# This passes a, b, c to the superclass
def initialize( a, b, c, d, e, f )
  super( a, b, c )
end
# This passes a, b, c to the superclass

def initialize( a, b, c )
  super
end
# This passes no arguments to the superclass
def initialize( a, b, c)
  super()
end

第一種把參數中a,b,c傳入父類initialize方法;第二種傳入全部參數,但不加上括號;第三種不傳入參數

3.屬性的setter/getter

有人這樣寫setter/getter:
代碼如下:
puts( t1.get_description )
t1.set_description( “Some description” )

這樣似乎更方便一些:
代碼如下:
puts( t1.description )
t1.description = “Some description”

如果你想用第二種寫法,你不得不這么寫:

注:這是正確的:def name=(aName)

但這卻是錯的:def name  =(aName)

你看出差別的了嗎?

根據上一章,你可以知道,這里定義了兩個方法:description方法和description=方法。原來是通過將"="加入方法名實現的,ruby真是神奇,Java就不能這樣寫。

然而,事實上有更簡單的方法來實現setter/getter
代碼如下:
attr_reader :description
attr_writer :description

由一個attr_reader/attr_writer加上符號(:description)構成,事實上,可以一次為多個元素設置setter/getter
代碼如下:
attr_writer(:name, :description)
attr_accessor(:value, :id, :owner)
attr_accessor

等價于:
代碼如下:
attr_reader :value
attr_writer :value

4.super

和Java不一樣,Ruby中的super方法可以出現在任何方法中,而不只是initialize(構造方法)中。

在第2點中就對super方法的使用有介紹,單獨的super將所有參數傳給父類initialize,而帶參數的super則將指定參數傳給父類initialize。

代碼如下:
# This passes aName, aDescription to the superclass
def initialize( aName,aDescription )
  super( aName, aDescription )
end

# This passes a, b, c to the superclass's aMethod
def aMethod( a, b, c )
  super
end

5.常量和嵌套類(constants & nested class)

代碼如下:
class X
 A = 10
 
 class Y
  def xyz
   puts( "goodbye" )
  end
 end
 
 def self.abc
  puts("hello")
 end
end

常量:以大寫字母開頭的變量。

如果要訪問常量或內部類,需用 ::
代碼如下:
puts( X::A )

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 咸阳市| 红原县| 苍山县| 高陵县| 古蔺县| 万山特区| 淮南市| 土默特左旗| 新郑市| 铁岭县| 米易县| 泰宁县| 聊城市| 宁乡县| 涟水县| 普陀区| 都江堰市| 杭锦旗| 巴青县| 临武县| 松阳县| 阿图什市| 巴林右旗| 黑水县| 大方县| 稷山县| 随州市| 吉林省| 云林县| 监利县| 越西县| 屯门区| 西藏| 元朗区| 信阳市| 珲春市| 金昌市| 都江堰市| 克山县| 扶沟县| 郎溪县|