- 149 名前:nobodyさん mailto:sage [2008/02/29(金) 10:50:21 ID:???]
- >>148 だめー
大体にしてメソッド名をobjにするなややこしい。 コンストラクタかと思うじゃねーか。 そもそもそういう理解の仕方じゃまずいぞ。 privateなメソッドというのは「class hoge{}の外からのアクセスは完全にNG」て意味。 中からなら$this->やObject::obj()でアクセス可能って意味だ。外から$thisなんてことはできないので$obj->objかObject::objを使うことになるけど、 それらのアクセスはprivateじゃ無理よってこと。 protectedは継承したクラスもアクセス可能という意味。だから、class fuga extends hoge{}はhogeのprotectedなメソッドを $thisとかObject::objで扱うことができるってこった。だが当然インスタンス生成してのアクセスである$obj->objは不可能だし、 外部からのObject::objも不可能。 publicは外からのアクセスもできる。$thisだろうとObject::objだろうとOKだ。 staticは上記3つとは別な概念。上記3つは同時に存在できないが、こちらはpublic staticのように併存OKだ。 staticなメソッドは、「外部からそのクラスのインスタンス生成なしで呼び出すことのできるメソッド」 と言う意味。でも重要なのは「staticと指定したメソッドは、そのクラスのstaticでないプロパティや メソッドを呼び出せない」ってこと。staticでないメソッドやプロパティを呼び出してるメソッドにstaticを設定すると エラーが出るはず。staticなメソッドはぶっちゃけて言うと一般の関数と変わらない使い方ができる。 PHPみたいなゆるい言語においては微妙な存在ってこった。ただ、「こういう処理をする関数はここにまとめておこう」みたいなときに 使ったりするね。
|

|