いろんな言語を同時に使っていると、ついはまってしまう挙動の違いについて気がついたものからざっくり書いておこうと思う。
Javaの子クラスのコンストラクタの挙動
public class Parent01 { public Parent01() { System.out.println("Parent01"); } } public class Child01 extends Parent01 { public Child01() { System.out.println("Child01"); } } public class Main { public static void main(String[] args) { Child01 c1 = new Child01(); } }
実行結果
Parent01 Child01
PHPの子クラスのコンストラクタの挙動
class Parent01 { public function __construct() { echo "Parent01\n"; } } class Child01 { public function __construct() { echo "Child01\n"; } } $c1 = new Child01();
実行結果
Child01
Javaでは親クラスのコンストラクタが最初に実行されるが、PHPでは親クラスのコンストラクタは実行されない。
PHPで親クラスのコンストラクタを実行したい場合は子クラスで、 parent::__construct(); を明示的に実行する必要がある。
(注
Javaのソースはクラス毎に別ファイルにする必要がある。この場合、Parent01.java,Child01.java,Main.javaの3つのファイルが必要である。
最近のコメント