>  > ミシュラン Pilot Super Sport ★ サマータイヤ 205/45R17 WEDS ウェッズ Kranze クレンツェ Elaborar エルアボラ ホイールセット 4本 17インチ 17 X 7 +44 4穴 100
KBL 農業機械用塗料タッチアップスプレー イセキ アイボリーホワイト KG0300S 420ml 12本セット

205/45R17 ホイールセット 4本 4穴 エルアボラ ★ Kranze Super 17インチ 7 X Pilot 100 Elaborar 17 WEDS ホイールセット サマータイヤ クレンツェ ウェッズ Sport 100 ミシュラン +44

開発のメモだったり、技術のメモだったり・・・※各ページは予告なく添削していますので、ご了承ください。

ミシュラン Pilot Super Sport ★ サマータイヤ 205/45R17 WEDS ウェッズ Kranze クレンツェ Elaborar エルアボラ ホイールセット 4本 17インチ 17 X 7 +44 4穴 100

上記の広告は1ヶ月以上更新のないブログに表示されています。

ミシュラン Pilot Super Sport ★ サマータイヤ 205/45R17 WEDS ウェッズ Kranze クレンツェ Elaborar エルアボラ ホイールセット 4本 17インチ 17 X 7 +44 4穴 100 海外直輸入価格でご奉仕!

YOKOHAMA ADVAN Sport V103 サマータイヤ 215/45R18 MANARAY RMP-025F ホイールセット 4本 18インチ 18 X 7 +48 5穴 114.3;17インチ サマータイヤ セット【適応車種:IS(30系 IS250、IS300h)】WORK エモーション M8R グリミットブラック 7.0Jx17LEMANS V LM5 225/45R17;Project μ プロジェクト ミュー ブレーキパッド TYPE HC+ リア Mercedes-Benz W201 201126 190D 2.5

ミシュラン Pilot Super Sport ★ サマータイヤ 205/45R17 WEDS ウェッズ Kranze クレンツェ Elaborar エルアボラ ホイールセット 4本 17インチ 17 X 7 +44 4穴 100;18インチ サマータイヤ セット【適応車種:レガシィ B4(BN系)】WEDS レオニス CH パールブラックミラーカット 7.0Jx18エナセーブ RV504 225/50R18;【ロエン / トミーカイラ】【 M4 CBA-3C30 2014.12~ 】 フロントスポイラー [材質] カーボン+FRP;CRIMSON(クリムソン) CLUB LINEA L747 (クラブリネア L747) 19インチ 10.0J PCD:112 穴数:5 inset:-28 DISK TYPE:HIGH カラー:プレミアムホワイトポリッシュ [ホイール1本単位]/H;ブレンボローター エクストレイル T31 07/08~ リア用左右1セット

APPブレーキホース前後セット スチールtypeJZS175クラウン, [ホイール1本(単品)] CRIMSON / CLUB LINEA L612 (BK) 19インチ×7.5J PCD:100 穴数:5 インセット:46, 【送料無料】Weds(ウェッズ) REVSPEC PRIMES(レブスペック プライム) 品番:PR-H119 フロント用 ホンダ トゥディ JW3 '90/3~'98/10 Weds [ブレーキパッド 自動車], 【高性能低ダスト】VW ニュービートル 9CAZJ用 フロントブレーキパッド Volkswagen フォルクスワーゲン ☆送料無料☆ 当日発送可能(弊社在庫品の場合), 激安販売 トーヨー トランパスLuk 165/50R16 165/50-16 4本 激安SALE 軽 N-BOX N-ONE デイズ ワゴンR ウェイク タント ムーヴ ミラ デイズ 【ds390262】 PINGEL ペットコック 6000シリーズ ライトニング ハーレーパーツ


新しい記事を書く事で広告が消せます。

【PHPオブジェクト指向】アクセス修飾子

「アクセス修飾子」について、メモしておこうと思います。
PHP5からクラスを作成するときは、アクセス修飾子を指定してメンバやメソッドを宣言しなくてはなりません。クラスの継承などでオーバーライドなどの仕組みを利用する場合などは、アクセス修飾子の種類を意識して書く必要がありますので、正しく理解しておこうと思いマス。

【目次】

1.3種類のアクセス修飾子
2.アクセス修飾子でいろいろ実験してみた
 2-1.protectedとprivate「参照」と「実行」の違い
 2-2.protectedとprivateを指定したメンバやメソッドの使える範囲実験
あとがき・備考
 「アクセス修飾子」と「アクセス指定子」という呼び方についてなど


3種類のアクセス修飾子

アクセス修飾子は3種類あり、クラスのメンバやメソッドに指定することで、指定したメンバやメソッドの使える範囲を指定します。使える範囲を指定することで、クラスの保守性を向上させます。

以下はアクセス修飾子の一覧です。

アクセス修飾子指定したメンバやメソッドの使える範囲
指定なし ・メンバ変数は修飾子の指定がないとエラーになります。
・メソッドの場合はpublicを指定した場合と同じ扱いです [LAILE] レイル Beatrush ペダルセット レッド スズキ スイフトスポーツ [ZC33S 17/09~] ※本州は送料1260円 北海道は2160円 沖縄・離島は都度確認。
publicクラスの内外どこからでも参照できる。
protected宣言したクラス内と、継承したクラスから参照できる。
private宣言したクラス内からしか参照できない。

アクセス修飾子でいろいろ実験してみた

リストで簡単な説明を書いたものの、自分の認識不足で実際には説明通りに実行されていないように見えるときがあるなぁと思うことがあったので、説明の正確な意味を理解するためにいろいろ試してみた結果を書いておきます。参考まで 【T263】プリウスα [H23/5-H26/11][ZVW40W] カジュアルG ベージュ Bellezza ベレッツァ シートカバー。実行結果はすべて以下のような表示結果になるようソースコードを書いています。

[ 実行結果 ]

ミシュラン Pilot Super Sport ★ サマータイヤ 205/45R17 WEDS ウェッズ Kranze クレンツェ Elaborar エルアボラ ホイールセット 1993年01月~1996年05月 4本 17インチ 17 X 7 +44 4穴 100 本州は送料無料

「参照」と「実行」は扱いが別らしい。
3つのメンバに各々種類の異なるアクセス修飾子を指定してみました。「protected」と「private」を指定したメンバはエラーになるのかなと思ったら、特に問題なし。

[ car.php ]

<?php
class Car
{
 public $color = "赤い色";
 protected $spead = 20;
 private $unit = "km";
 public function run(){
 print "{$this->color}の車で、時速{$this->spead}{$this->unit}で走行しています。";
 }
}
$myCar = new Car();
$myCar->run();
?>

直接参照しているのは、同じクラス内のメソッドだから使えるということでしょう。直接実行しているわけではないなら、クラスの外でもprotectedやprivateで指定した値を結果に反映させることができるんですね。

protectedとprivateを指定したメンバやメソッドの使える範囲実験

protectedとprivateは、クラスの継承とオーバーライド時にその違いが分かりやすくなります。

[ car.php ]

<?php
class Car
{
 protected $color = "塗装前";
 private $spead = 0;
 public function redrun(){
 $this->run();
 }
 
 private function run(){
 print "{$this->color}の車で、時速{$this->spead}kmで走行しています 。<br />";
 }
}
class MyCar extends Car {
 public $color = "赤い色";
 public $spead = 20;
}
$redCar = new MyCar();
$redCar->redrun();
$redCar->run();
?>

【実行結果】

[ ポイント1: protectedを指定したメンバ]
protectedを指定した$color変数は、サブクラスまでの範囲で参照できるので問題なく実行できています 【送料無料】ESPELIR(エスペリア) SUPER DOWNSUS 1台分セット 品番:ESH-1061 ホンダ N BOX + Custom JF1 S07A H24/7~ ESPELIR [ダウンサス サスペンション 自動車]。

[ ポイント2:privateを指定したメンバ ]
スーパークラスでprivateを指定している$spead変数は、サブクラスで変更ができていません。継承自体はできているのでスーパークラス側の値の「0」が実行できているようですが、クラスの外側から「参照」は許されていないようでサブクラスの上書きに応じていません。

[ ポイント3:privateを指定したメソッド ]
privateを指定しているrun()メソッドはエラーを返していますが、publicを指定したredrun()を経由して実行すれば、run()メソッドを直接実行したことにならないためか、run()メソッドの処理結果が得られます。


実験結果からいろいろなパターンを思いついて興味深い疑問が出てきたと思うのですが、とりあえずの記録はここまで。また後日必要に応じて追記いたします。

あとがき・備考

以前の記事で「アクセス修飾子」のことを「アクセス指定子」って書いた気がします。C++やJavaで見かける表現ですが、C++やJavaでも「アクセス修飾子」という表現も普通に使いますし、意味は同じです。※C++やJavaもオブジェクト指向型のコンパイル言語です。因みにPHPはスクリプト言語。


スポンサーリンク

スポンサーサイト
【PHPオブジェクト指向】クラスの継承ホーム XAMPPを設定ごと別のPCへ移動する方法

コメント

コメントの投稿

非公開コメント
{yahoojp}jpprem01-zenjp40-wl-zd-32622