Ruby多態(tài)性如何設(shè)置訪問權(quán)限

小樊
81
2024-11-06 07:45:42
欄目: 編程語言

在Ruby中,多態(tài)性允許對(duì)象以它們所屬的類為基礎(chǔ)表現(xiàn)出不同的行為。然而,多態(tài)性本身并不提供訪問權(quán)限控制。要設(shè)置訪問權(quán)限,你需要使用Ruby的訪問修飾符(如private、protectedpublic)來控制方法或?qū)傩缘脑L問級(jí)別。

以下是如何在Ruby中設(shè)置訪問權(quán)限的示例:

class MyClass
  # 公共方法
  def public_method
    puts "This is a public method."
  end

  # 受保護(hù)方法
  protected

  def protected_method
    puts "This is a protected method."
  end

  # 私有方法
  private

  def private_method
    puts "This is a private method."
  end
end

# 創(chuàng)建一個(gè)MyClass實(shí)例
my_instance = MyClass.new

# 訪問公共方法
my_instance.public_method # 輸出 "This is a public method."

# 訪問受保護(hù)方法(會(huì)引發(fā)錯(cuò)誤)
my_instance.protected_method # 拋出 NoMethodError: protected method `protected_method' called on MyClass instance

# 訪問私有方法(會(huì)引發(fā)錯(cuò)誤)
my_instance.private_method # 拋出 NoMethodError: private method `private_method' called on MyClass instance

在這個(gè)例子中,我們定義了一個(gè)名為MyClass的類,其中包含三個(gè)不同訪問權(quán)限的方法:public_method(公共方法)、protected_method(受保護(hù)方法)和private_method(私有方法)。

  • public_method可以被任何對(duì)象訪問。
  • protected_method只能被同一個(gè)類的實(shí)例訪問,或者該類的子類實(shí)例訪問。
  • private_method只能被同一個(gè)類的實(shí)例訪問,但不能被子類訪問。

請(qǐng)注意,多態(tài)性并不涉及訪問權(quán)限控制。如果你需要在多態(tài)的情況下控制訪問權(quán)限,你需要在每個(gè)子類中顯式地實(shí)現(xiàn)相應(yīng)的訪問控制邏輯。

0