|
PHP4からオブジェクト指向的な機能・動作が改善されていますが、オブジェクト指向言語であるJavaとどの程度挙動が異なるか、ちょっとずつまとめてみようかと思います。基本的には、PHPマニュアルに記載されていなくて、「どうなるの?」と思ったことを主にやっています。
今回は、「オーバーロード」についてです。
メソッドのオーバーロードに関してもコンストラクタと同様、1つしか定義できません。overload関数というモノも用意されていますが、どちらかというとoverride(乗っ取り?)するための関数のようで、全く別物です。
以下のサンプルではあえてオーバーロードさせたように見せていますが、引数なしのdoSomethingメソッドはコールされていません。
●OverloadTest.php
<?php
class ClassA
{
function doSomething()
{
echo "doSomething<br>";
}
function doSomething($param = "")
{
echo "doSomething with param: " . $param . "<br>";
}
}
$obj = new ClassA();
$obj->doSomething();
$obj->doSomething("foobar");
?>
●出力結果
doSomething with param:
doSomething with param: foobar
|