お兄さん、とても混乱しているようです
とても混乱しています
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php class cA { /** * Test property for using direct default value */ protected static $item = 'Foo'; /** * Test property for using indirect default value */ protected static $other = 'cA'; public static function method() { print self::$item."\r\n"; // It prints 'Foo' on everyway... :( print self::$other."\r\n"; // We just think that, this one prints 'cA' only, but... :) } public static function setOther($val) { self::$other = $val; // Set a value in this scope. } } class cB extends cA { /** * Test property with redefined default value */ protected static $item = 'Bar'; public static function setOther($val) { self::$other = $val; } } class cC extends cA { /** * Test property with redefined default value */ protected static $item = 'Tango'; public static function method() { print self::$item."\r\n"; // It prints 'Foo' on everyway... :( print self::$other."\r\n"; // We just think that, this one prints 'cA' only, but... :) } /** * Now we drop redeclaring the setOther() method, use cA with 'self::' just for fun. */ } class cD extends cA { /** * Test property with redefined default value */ protected static $item = 'Foxtrot'; /** * Now we drop redeclaring all methods to complete this issue. */ } cB::setOther('cB'); // It's cB::method()! cB::method(); // It's cA::method()! cC::setOther('cC'); // It's cA::method()! cC::method(); // It's cC::method()! cD::setOther('cD'); // It's cA::method()! cD::method(); // It's cA::method()! /** * Results: -> * Foo * cB * Tango * cC * Foo * cD * * What the hell?! :) */ ?>
これは上書きですか?なぜこのような出力になるのでしょうか? わかりにくいです。
-----解決策--------------------------------
これは何と呼ばれますか?トラブルを求めています!
疲れるのは疲れる
------解決策----------------------
理解できない場合は忘れてください、理解できません関係ないよ。
------解決策---------
------解決策---------
これはより明確かもしれません
- PHP コード
クラスcA { /*** 直接デフォルト値を使用するためのテスト プロパティ * 直接のデフォルト値を使用してプロパティをテストする*/ protected static $item = 'Foo'; /*** 間接的なデフォルト値を使用するためのテスト プロパティ * 間接的なデフォルト値を使用してプロパティをテストする*/ protected static $other = 'cA'; パブリック静的関数メソッド() { __METHOD__ . ' ' . __CLASS__ . self::$item."rn"; __METHOD__ . ' ' . __CLASS__ . self::$other."rn"; } パブリック静的関数 setOther($val) { self::$other = $val; // このスコープに値を設定します。 } } クラス cB は cA を拡張します { /*** 再定義されたデフォルト値を使用してプロパティをテストします * デフォルト値のテスト属性を再定義しました*/ protected static $item = 'Bar'; パブリック静的関数 setOther($val) { self::$other = $val; } } クラス cC は cA を拡張します { /*** 再定義されたデフォルト値を使用してプロパティをテストします * デフォルト値のテスト属性を再定義しました*/ protected static $item = 'Tango'; パブリック静的関数メソッド() { __METHOD__ . ' ' . __CLASS__ . self::$item."rn"; __METHOD__ . ' ' . __CLASS__ . self::$other."rn"; } /*** setOther() メソッドの再宣言を削除し、楽しみのために cA を 'self::' とともに使用します。*/ } クラス cD は cA を拡張します { /*** 再定義されたデフォルト値を使用してプロパティをテストします * デフォルト値のテスト属性を再定義しました*/ protected static $item = 'フォックストロット'; /*** この問題を解決するために、すべてのメソッドの再宣言を削除します。 * この問題を解決するために、すべての再宣言方法を放棄します。*/ } cB::setOther('cB'); // cB::method() です! cB::method(); // cA::method() です! cC::setOther('cC'); // cA::method() です! cC::method(); // cC::method() です! cD::setOther('cD'); // cA::method() です! cD::method(); // cA::method() です! <div class="clear"></div>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Web アプリケーション開発に PHP を使用する場合、多くの場合データベースを使用する必要があります。データベースを使用すると、エラー メッセージがよく発生します。その中でも、PHPFatalerror: Calltoamemberfunctionfetch() は、PDO を使用してデータベースをクエリするときに発生する比較的一般的なエラーです。では、このエラーの原因と解決方法は何でしょうか?この記事ではそれについて詳しく説明します。 1. エラーの原因

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

C 言語における static の役割と使用法: 1. 変数スコープ; 2. ライフサイクル; 3. 内部関数; 4. グローバル変数の変更; 5. 関数の変更; 6. その他の用途; 詳細な紹介: 1. 変数スコープの場合変数の前に static キーワードがある場合、変数のスコープは、変数が宣言されているファイルに制限されます。言い換えると、変数は「ファイル レベルのスコープ」であり、「」の発生を防ぐのに非常に役立ちます。変数の重複定義問題; 2. ライフサイクル、静的変数はプログラム実行開始時に一度初期化され、プログラム終了時に破棄されるなど。

1. static まず次のプログラムを見てください: publicclassHello{publicstaticvoidmain(String[]args){//(1)System.out.println("Hello, world!");//(2)}}セグメント プログラムは、Java を学習したことのあるほとんどの人には馴染みのあるものです。 Java を学習したことがなくても、C などの他の高級言語を学習したことがある場合でも、このコードの意味は理解できるはずです。これは単に「Hello, world」を出力するだけであり、他に用途はありませんが、静的キーワードの主な目的を示しています。

static の機能: 1. 変数; 2. メソッド; 3. クラス; 4. その他の用途; 5. マルチスレッド環境; 6. パフォーマンスの最適化; 7. シングルトン モード; 8. 定数; 9. ローカル変数; 10.メモリ レイアウトの最適化; 11. 繰り返しの初期化を避ける; 12. 関数で使用する。詳細な紹介: 1. 変数、静的変数 変数が静的として宣言されると、その変数はインスタンス レベルではなくクラス レベルに属します。つまり、オブジェクトがいくつ作成されても、静的変数は 1 つだけ存在し、すべてのオブジェクトが存在します。この静的変数などを共有します。

C 言語の static キーワードの実践的な応用シナリオと使用スキル 1. 概要 static は C 言語のキーワードであり、変数や関数を変更するために使用されます。その機能は、プログラムの実行中にライフサイクルと可視性を変更し、変数と関数を静的にすることです。この記事では、static キーワードの実際のアプリケーション シナリオと使用テクニックを紹介し、具体的なコード例を通じて説明します。 2. 静的変数により変数のライフ サイクルが延長される static キーワードを使用してローカル変数を変更すると、変数のライフ サイクルを延長できます。

いいえ、トップレベルのクラスをプライベートまたは保護されたものとして宣言することはできません。 public またはデフォルト (修飾子なし) にすることができます。修飾子がない場合は、デフォルトのアクセス権が存在する必要があります。構文 //Atoplevelclass publicclassTopLevelClassTest{ //Classbody} 最上位クラスが private として宣言されている場合、コンパイラはエラーを報告し、「修飾子 private はここでは使用できません。」というプロンプトを表示します。これは、トップレベルのクラスをプライベートにすることはできないことを意味し、保護されたアクセスにも同じことが当てはまります。

jQuery で POST リクエスト メソッドを使用する方法 Web 開発では、フロントエンド ページとバックエンド サーバー間のデータ対話が頻繁に発生します。中でも POST リクエストはよく使われるメソッドで、POST リクエストを通じてバックエンドサーバーにデータを送信し、対応する戻り結果を取得できます。 jQuery は、AJAX リクエストを行うための便利な方法を提供する人気のある JavaScript ライブラリです。この記事では、jQuery で POST メソッドを使用してデータを送信する方法と具体的な手順を紹介します。
