1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

メソッドのアクセス権

Last updated at Posted at 2023-03-26

メソッドのアクセス権について

メソッドのアクセス権は、そのメソッドがどの範囲から呼び出されることができるかを制御するもので、主に3つの種類があります。

  • public:publicなメソッドは、どこからでもアクセス可能です。これがデフォルトのアクセス権です。
  • protected:protectedなメソッドは、同じクラスまたはサブクラスからのみアクセス可能です。
  • private:privateなメソッドは、同じクラス内からのみアクセス可能です。サブクラスや外部からのアクセスはできません。

RUBYにおけるメソッドのアクセス権の文法

RUBYでは、メソッドのアクセス権を指定するには、以下のように記述します。

class MyClass
  def public_method
    # パブリックメソッドの処理
  end

  protected

  def protected_method
    # プロテクテッドメソッドの処理
  end

  private

  def private_method
    # プライベートメソッドの処理
  end
end

JavaScriptにおけるメソッドのアクセス権の文法

JavaScriptでは、メソッドのアクセス権を指定することはできません。しかし、オブジェクト指向プログラミングの概念を利用して、プライベートメソッドを実現することができます。以下は、クロージャを利用したプライベートメソッドの例です。

function MyClass() {
  var privateMethod = function() {
    // プライベートメソッドの処理
  }

  this.publicMethod = function() {
    // パブリックメソッドの処理
    privateMethod();
  }
}

このように、JavaScriptではクロージャを使って、プライベートメソッドを実現することができます。

※クロージャーとは

クロージャ(closure)とは、関数とその関数が参照する変数(自由変数)を一体化したものです。

JavaScriptなどの言語では、関数内で定義された変数は、その関数のスコープ内でのみアクセス可能です。しかし、クロージャを使用することで、関数のスコープ外でその関数が参照する変数を保持することができます。

具体的には、関数の中で別の関数を定義し、その中で外側の関数の変数を参照するようにすることで、クロージャを作成することができます。

以下は、JavaScriptでのクロージャの例です。

function counter() {
  var count = 0;

  return function() {
    count++;
    console.log(count);
  }
}

var c = counter();
c(); // 1
c(); // 2
c(); // 3

上記の例では、counter関数の中でcount変数を定義しています。そして、counter関数内で無名関数を定義し、その中でcount変数を参照しています。最後に、counter関数から無名関数を返すことで、クロージャを作成しています。

これにより、c関数を呼び出すたびにcount変数が1ずつ増えていき、値がコンソールに出力されます。

クロージャは、変数のスコープをより柔軟に制御することができるため、関数型プログラミングやオブジェクト指向プログラミングなどで幅広く活用されます。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?