クラス(応用)
スーパークラス
継承なしのクラスまたはクラス内で最も深い位置のクラスのこと
<?php
/* スーパークラス1 */
/* サブクラスがない */
class SuperClass1{
function test1(){
echo "SuperClass1 test1()<br />";
}
}
/* スーパークラス2 */
class SuperClass2{
function test1(){
echo "SuperClass2 test1()<br />";
}
}
/* スーパークラス2を元にしたサブクラス */
class SubClass1 extends SuperClass2{
}
?>
<?php
// テスト1
$obj1 = new SuperClass1();
$obj1->test1();
// テスト2
$obj2 = new SubClass1();
$obj2->test1();
?>
継承
別のクラスを下敷きにして作成するクラス
<?php
// スーパークラスを定義
class SuperClass1{
function test1(){
echo "SuperClass1 test1()<br />";
}
}
// 継承時には"extends"を使用して上位クラスを定義する
class SubClass1 extends SuperClass1{
function test2(){
echo "SubClass1 test2()<br />";
}
}
?>
<?php
// テスト
$obj1 = new SubClass1();
$obj1->test1();
$obj1->test2();
?>
抽象クラス
本体のクラスを使用することはできず、継承などしてしか使用できないクラス
<?php
// 抽象クラス定義
abstract class AbstractClass1{
// 普通にメソッドを定義可能
function test1(){
echo "AbstractClass1 test1<br />";
}
// 抽象クラスの定義
abstract function test2();
}
// サブクラスでは抽象クラスで定義したメソッドなどの再定義が必要
class SubClass1 extends AbstractClass1{
function test2(){
echo "SubClass1(AbstractClass1) test2<br />";
}
function test3(){
echo "SubClass1 test3<br />";
}
}
?>
<?php
// テスト
$obj1 = new SubClass1();
$obj1->test1();
$obj1->test2();
$obj1->test3();
?>
動的クラス
クラスのコピーといれわるインスタンスを生成し使用するクラスのこと
静的クラス
使用されるクラスでデータが全て共用されるクラスのこと
<?php
// 動的メソッドのみ
class DynamicClass1{
function test1(){
echo "DynamicClass1 test1();<br />";
}
}
// 制的メソッドのみ
class StaticClass1{
// 静的メソッドの場合は"ststic"定義
static function test1(){
echo "StaticClass1 test1();<br />";
}
}
// 動的メソッド、静的メソッド混在
// クラス内に動的メソッドと静的メソッドの混在は可能だが、参照は不可!
class SampleClass1{
function test1(){
echo "SampleClass1 test1();<br />";
}
static function test2(){
echo "SampleClass1 test2();<br />";
}
}
?>
<?php
// 動的テスト
$obj1 = new DynamicClass1();
$obj1->test1();
// 静的テスト
StaticClass1::test1();
// 動的、静的混在テスト
$obj2 = new SampleClass1();
$obj2->test1();
SampleClass1::test2();
?>
クラス定数
クラスで定義する定数のこと
<?php
class SampleClass1{
// クラス定数定義は"const"を使用
const TEST1 = "SampleClass1 define";
function test1(){
echo "SampleClass1 test1():" . SampleClass1::TEST1 . "<br />";
}
static function test2(){
echo "SampleClass1 test2():" . SampleClass1::TEST1 . "<br />";
}
}
?>
<?php
// 動的メソッドから参照
$obj1 = new SampleClass1();
$obj1->test1();
// 静的メソッドから参照
SampleClass1::test2();
// 外部から参照
echo SampleClass1::TEST1;
?>
最終更新:2011年03月31日 15:57