静的・動的について
業務をしつつプログラミングを勉強し始めて、静的・動的について当たり前のように使っているがしっかり調べられておらず、整理しようと思ったので整理。
静的とは
・静的型付け(せいてきかたづけ、英: static typing)とは、プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型が、コンパイル時など、そのプログラムの実行よりも前にあらかじめ決められている、という型システムの性質のことである。(wikipediaより抜粋)
小難しいので自分なりに整理
・プログラム実行時に値が切り替わったりせず、事前に設定された状態を保持し続けている状態、というか型
PHPで静的なプロパティを宣言する際、こんな感じ。
class test
{
public static $A = 1;
}
上記のようにstaticを付けて宣言すると、静的に定義された状態となる。
staticで静的にクラスのプロパティやメソッドを定義すると、クラスをインスタンス化せずに用いることができる。
また、staticなプロパティは、インスタンス化されたクラスオブジェクトからアクセスすることはできない。
(staticなメソッドはアクセス可能。)
動的とは
・動的型付け(どうてきかたづけ、英: dynamic typing)とは、プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型を、コンパイル時などそのプログラムの実行よりも前にあらかじめ決めるということをせず、実行時の実際の値による、という型システムの性質のことである。(wikipediaより抜粋)
こちらも小難しいので自分なりに整理
・静的のように状態を保持するのではなく、プログラム実行時の実際の値となる型
静的に対して、動的な変数は中身がその時その時の状態で変わりますよ、ということ
class test
{
public $A = (初期値);
}
上記のようにstaticつけずに定義すれば、プログラムによって変数内の値が編集可能となる。
また、静的な定義に対し、動的なクラスのプロパティ、メソッドはインスタンス化しないとアクセスができない。
まとめ
・静的な定義をすると、そのプロパティやメソッドは事前に設定された状態を保持し続ける
・動的な定義をすると、そのプロパティやメソッドはプログラム実行時の実際の値がそのものの値となる
基本を一つ一つ着実に学習していき、よりよいコードを書けるようになっていきたいですなぁ。。。(勉強あるのみ)