はっきり言ってしまうと, Java の書き方に非常によく似ている。
- 定義
class class_name
{
}
- アクセス
private, protected, public
- this
$this
- クローン(値コピーの生成)
clone インスタンス名
- 親クラスへのアクセス これだけ大きく違うかも
parent::
-抽象クラス
abstract
- インタフェース
interface
といったように, Java とよく似た部分が多い。
本では, サンプルなどを動作させる方法や, ファイルの分け方などないので
メモしておく。
----------------------------------------------------------
サンプル
ファイル名 AKB48.php 親クラス
No3b.php サブクラス
classTest.php テスト用
・動作方法
これらのサンプルを同一フォルダ(ディレクトリ内に入れ)
コンソール(Windows ならコマンドプロンプトで)
おそらくXAMPPインストール時に, PHPエンジンのパスはとおっているはず,
気になるようでしたら,
php -v を実行してみてください。(バージョン情報の表示)
php classTest.php
でO.K.
・動作確認
Window 7 64bit PHPはXAMPPでインストールしたもの
----------------------------------------------------------
AKB.php
<?php
class AKB
{
private $name;
private $team;
const MEMBER = 48; // 定数定義
public static $akb = "AKB48"; // static 変数
public function __construct( $name ) // コンストラクタ
public function __construct( $name ) // コンストラクタ
{
$this->name = $name;
}
public function work()
{
print "AKBがやってきた\n";
}
public function getName() // getter
{
print($this->name . "\n");
}
public function setName( $name ) // setter
{
$this->name = $name;
}
public function getGroup() // static 変数の参照
{
return self::$akb;
}
public static function greet()
{
print ("こんにちは!\n");
}
}
?>
No3b.php
<?php
class No3b extends AKB
{
private $song;
public function __construct($name, $song) // コンストラクタ
{
parent::__construct($name); // 親クラスのコンストラクタ呼び出し
$this->song = $song;
}
public function work() // Override
{
print "No3bがやってきた\n";
}
public function printSong()
{
print ($this->song . "\n");
}
}
?>
classTest.php
<?php
require 'AKB.php'; // AKBクラスを呼ぶ
require 'No3b.php'; // No3bクラスを呼ぶ
$mayuyu = new AKB("まゆゆ");
$mayuyu2 = clone $mayuyu; // クローンを作った
$mayuyu2->setName("渡辺麻友"); // クローンを変更
$mayuyu->getName();
$mayuyu2->getName();
$mayuyu->work();
$nyaro = new No3b("こじはる", "ハート型ウイルス"); // サブクラスをつくる
$nyaro->printSong();
$nyaro->work(); // サブクラスでoverrideした関数の呼び出し
AKB::greet(); // static 関数の呼び出し
?>
実行結果
まゆゆ
渡辺麻友
AKBがやってきた
ハート型ウイルス
No3bがやってきた
こんにちは!
渡辺麻友
AKBがやってきた
ハート型ウイルス
No3bがやってきた
こんにちは!
0 件のコメント:
コメントを投稿