【いまさらネタ】static(静的)について理解してみた
Apexは基本javaと同じなので、staticの考えは一緒です。
仕事で利用しているにも関わらず、
書かれているコードに対して、なぜつける必要があるんだっけ?
とか、説明ができなかったりと、、
見慣れているはずなのに、あれ?これってなんだっけ?
てなって、あー理解してなかったな、、と改めて感じました。
ということで、以下サイトを参考に勉強しました。
【Java】 staticって何? | 一番かんたんなJava入門
ふむふむ、なるほど。
インスタンスに属するか、クラスに属するか、という事だったのか。
後者がstaticなメンバとなる。
実際にapexで書いてみよう。
humanクラス
public class human { public static integer human_cnt = 0; public string name; public human(String name) { human_cnt += 1; this.name = name; } public static void testcall() { system.debug('human_cnt:' + human_cnt); } }
実行するApexコード
// インスタンス作成 human h1 = new human('太郎'); human h2 = new human('次郎'); human h3 = new human('三郎'); // h1インスタンスの名前 system.debug(h1.name); // humanの件数 system.debug(human.human_cnt); // human(静的)メソッドの呼び出し human.testcall();
実行結果
humanクラスを用意して、h1,h2,h3のインスタンスを作成、
nameメンバはそれぞれのインスタンスに属している。
(h1.name は 太郎、といった感じ)
human_cntメンバはクラスが持っているので、
human.human_cntのような感じで呼び出せる。
メソッドの呼び出しも同様。
この場合、h1.human_cnt や human.name などは属している
領域が違うのでコンパイルエラーになる。
もやもやがとれて頭がすっきりしました。
日々精進。ほんならね~