カテゴリー:
クラスとオブジェクト
閲覧数:123 配信日:2023-05-24 23:04
オーバーライドしたメソッドの引数に「 = null」を付けるケースについて
オーバーライドしたメソッドの引数に「= null」を付けるケースは、オプショナルな引数を指定する場合に使用されます。親クラスのメソッドには引数がありますが、子クラスでのオーバーライドでは、その引数が省略可能であることを示すために「= null」を付けます。
具体的な説明を以下に示します。
親クラスのメソッドに引数がある場合、子クラスのオーバーライドでは同じ引数を持つ必要があります。ただし、子クラスでのオーバーライドでは、その引数を省略して呼び出すこともできるようにする場合があります。このような場合、引数に「= null」と指定してデフォルト値をnullに設定します。
例として、以下のような親クラスと子クラスがあるとします:
具体的な説明を以下に示します。
親クラスのメソッドに引数がある場合、子クラスのオーバーライドでは同じ引数を持つ必要があります。ただし、子クラスでのオーバーライドでは、その引数を省略して呼び出すこともできるようにする場合があります。このような場合、引数に「= null」と指定してデフォルト値をnullに設定します。
例として、以下のような親クラスと子クラスがあるとします:
class ParentClass {
public function doSomething($arg1, $arg2) {
// メソッドの処理
}
}
class ChildClass extends ParentClass {
public function doSomething($arg1, $arg2 = null) {
// メソッドの処理
}
}
上記の例では、親クラスのdoSomethingメソッドは2つの引数を持っていますが、子クラスのオーバーライドでは第二引数のデフォルト値をnullに指定しています。これにより、子クラスでのメソッド呼び出し時に第二引数を省略できるようになります。
以下は使用例です:
以下は使用例です:
$parent = new ParentClass();
$parent->doSomething('arg1', 'arg2');
$child = new ChildClass();
$child->doSomething('arg1'); // 第二引数を省略
子クラスのdoSomethingメソッドでは、第二引数を省略した場合に自動的にnullが設定されます。
このように、「= null」を付けることでオーバーライドしたメソッドの引数をオプショナルにすることができます。ただし、デフォルト値を持つ引数は末尾に配置する必要があります。
このように、「= null」を付けることでオーバーライドしたメソッドの引数をオプショナルにすることができます。ただし、デフォルト値を持つ引数は末尾に配置する必要があります。
子クラスのオーバーライドで、省略可能な引数として追加する例
下記は正しくオーバーライドできていますか
class ParentClass {
public function doSomething() {
// メソッドの処理
}
}
class ChildClass extends ParentClass {
public function doSomething($arg1 = null) {
// メソッドの処理
}
}
上記のコードは、正しくオーバーライドされています。
親クラスのdoSomethingメソッドは引数を持っていませんが、子クラスのオーバーライドでは$arg1を省略可能な引数として追加しています。これにより、子クラスでのメソッド呼び出し時に引数を省略することができます。
以下は使用例です:
親クラスのdoSomethingメソッドは引数を持っていませんが、子クラスのオーバーライドでは$arg1を省略可能な引数として追加しています。これにより、子クラスでのメソッド呼び出し時に引数を省略することができます。
以下は使用例です:
$parent = new ParentClass();
$parent->doSomething(); // 引数なしで呼び出し
$child = new ChildClass();
$child->doSomething(); // 引数なしで呼び出し
$child->doSomething('arg1'); // 引数を指定して呼び出し
子クラスのdoSomethingメソッドでは、引数$arg1のデフォルト値をnullとして指定しています。そのため、引数を省略した場合には$arg1には自動的にnullが設定されます。
このように、親クラスのメソッドと同じメソッド名を持ちながら、引数を追加することでオーバーライドを行うことができます。
このように、親クラスのメソッドと同じメソッド名を持ちながら、引数を追加することでオーバーライドを行うことができます。