[Flutter/Dart]「静的」と「動的」/「インスタンス変数」と「クラス変数」の違いとは

このページには広告が含まれる場合があります。

 

初心者向けのスマホアプリプログラミングでよく耳にする、「静的(スタティック)」と「動的(ダイナミック)」という概念について。

 

クラスとは?まずは基本の「設計図」のイメージ

クラスはプログラム上で「設計図」のような役割を果たしています。

たとえば「Car」というクラスを作ると、そのクラスは「車」という概念や特徴をまとめたひな型として使えるわけです。

クラスをベースにして、いろいろな車(インスタンス)を作成できます。

Car myCar = Car();
Car yourCar = Car();

このコードでは「Car」というクラスから、myCaryourCarという2つの車を作っています。

myCarはあなただけの車、yourCarは別の車といった具合に、それぞれのインスタンスは異なる車として扱えるのです。

実際の開発では、この「クラス」と「インスタンス」の使い分けがとても重要です。

 

静的メンバー(スタティック)とは?

静的メンバー、つまりスタティックなプロパティやメソッドを使うことで、「クラス全体に共通する情報」を一つにまとめられます。

たとえば、車の「メーカー名」は、すべてのインスタンスで共通の情報ですよね。わざわざインスタンスごとに設定する必要はありません。

そこで、クラスそのものに「スタティック変数」として保持すると便利です。

具体例として「メーカー名」をスタティック変数にしたい場合は、次のようにコードを書きます。

class Car {
  static String manufacturer = "Toyota";
}

このmanufacturer変数は、どのインスタンスからでもアクセスできますし、そもそもインスタンスを作らなくてもアクセス可能です。

 

インスタンス変数とクラス変数の違い

インスタンス変数は、各インスタンスがそれぞれの値を持ちます。

たとえば、myCar.coloryourCar.colorは別々の車の色として設定できます。一台ごとに異なる情報を持たせる場合に使います。

一方、クラス変数(スタティック変数)は、クラス全体で一つの値を共有します。

全インスタンスが同じ変数を参照し、どのインスタンスで値を変更しても他のインスタンスに影響を与えます。

車全体の「メーカー名」や「製造年」などのように、すべてのインスタンスで共通している情報を持たせる場合に便利です。

 

インスタンス変数とクラス変数の使い方

インスタンス変数を使いたい場合は、その前にインスタンスを作る必要があります。

この動的に生成される変数やメソッドは「インスタンス変数」や「インスタンスメソッド」と呼ばれます。

たとえば次のようにしてインスタンスを作り、その中の変数にアクセスします。

Car myCar = Car();
myCar.color = "Red";

一方、スタティックメンバーにはインスタンスが不要で、クラス名で直接アクセスできるのが特徴です。

これは、「共有情報」としてどのインスタンスにも同じ値を参照させる場合に便利です。

print(Car.manufacturer); // Toyota

 

まとめ

  • インスタンス変数:各インスタンスが異なる値を持つ。インスタンスを作った後にアクセス。
  • クラス変数(スタティック変数):クラス全体で一つの値を共有。インスタンス不要でアクセス可能。

この理解ができれば、DartやFlutterでのプログラミングもスムーズに進むはずです。

 

(詳しくは、以下の動画で説明していますので、よろしければご覧ください)

こんな記事も読まれています

今すぐ無料お試しキットを受け取る

はじめての方へ


みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

みんプロ作成アプリ





今すぐ無料お試しキットを受け取る
TOP