PHPマニュアルの要約コードによると問題はありませんが、次のコードはどこが間違っていますか?

WBOY
リリース: 2016-06-20 12:52:29
オリジナル
942 人が閲覧しました

abstract class A{    abstract public function b();   }class B extends A{    public function b(){        print "ok";    }}$k = new B();
ログイン後にコピー

$k は b() メソッドを呼び出しません。なぜ表示されますか?
PHP マニュアルの抽象コードによると、上記のコードのどこが間違っていますか?


ディスカッション (解決策) への返信

何も問題ありません

class B extends A{
public function b(){ PRINT "OK";
}
}
メソッド B はクラス B の構成関数であり、インスタンス化中に自動的に実行されるため、OK が出力されます

なし間違った


class B extends A{
public function b(){
print "ok";
}
}
メソッド b はクラス B のコンストラクターです。インスタンス 変換時に自動的に実行されるのでokが出力されます

クラス名と同じ文字を持つ関数はコンストラクタとみなされますか?

そうです


class B extends A{
public function b(){
print "ok";
}
}
メソッド b はクラス B のコンストラクターであり、インスタンス化されると自動的に実行されるため、ok が出力されます

チェックアウトしていただきありがとうございます。
そう!

クラスと同じ名前のメソッドがコンストラクタです
これは C++ から継承された機能です

そしてコンストラクタ __construct は Java から継承されています

php には、 2 つの宣言コンストラクター メソッドが共存しています

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!