問題タブ [extends]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHPの別のインターフェースから継承するメソッドを1つのインターフェースに上書きさせる
PHPで、そのインターフェイスを拡張するインターフェイスの1つのインターフェイスによって宣言されたメソッドを上書きする方法はありますか?
例:
私はおそらく何か間違ったことをしていますが、これが私が持っているものです:
通常、PHPでは、何かを拡張するときに、そこに含まれる任意のメソッドを上書きできます(右?)。ただし、あるインターフェースが別のインターフェースを拡張する場合、それは可能になりません。これが間違っていると考えていない限り...iShipperインターフェイスを実装する場合、ShipperオブジェクトにVendorオブジェクト(iVendorインターフェイスを実装する)を拡張させる必要はありません。私はちょうど言います:
FedExにiVendorとiShipperのすべてのメソッドを実装させます。ただし、__construct
iVendorとiShipperの関数は一意である必要があります。を取り出すことができることはわかって$shipment = null
いますが、Shippersを作成するのはそれほど便利ではありません(インスタンス化中にvendors_noとshipmentを渡すだけです)。
誰かがこれを機能させる方法を知っていますか?私のフォールバックは、$shipper->setShipment($shipment);
インスタンス化した後に荷送人に電話して出荷を設定する必要があることですが、それを回避する方法を望んでいます...
好奇心旺盛な方へのもう少しの説明:
FedExオブジェクトには、(cURLを使用して)FedExサイトにアクセスし、問題の貨物の見積もりを取得するメソッドがあります。UPSオブジェクト、BAXGlobalオブジェクト、Conwayオブジェクトなどがあります。それぞれに、実際に配送見積もりを取得するための完全に異なるメソッドがありますが、システムが知る必要があるのは、それらが「配送業者」であり、インターフェースはそれらで呼び出すことができます(したがって、それらをすべてまったく同じように扱い、「荷送人」配列でそれらをループしてgetTransitX()
、貨物に最適な荷送人を見つけることができます)。
ただし、各「シッパー」は「ベンダー」でもあり、システムの他の部分(DBの取得と挿入など)ではそのように扱われます。データ設計はがらくたの山であるため、FedExは次のような企業と一緒に保管されます。 「ベンダー」テーブルのDunderMifflinは、他のすべてのベンダーのすべてのプロパティを取得できることを意味しますが、iShipperによって提供される追加のプロパティとメソッドが必要です。
php - PHP で複数のクラスを使用してクラスを拡張できますか?
必要であるが、整理のために別々に保存したい関数を持つ複数のクラスがある場合、両方を持つようにクラスを拡張できますか?
すなわちclass a extends b extends c
編集:一度に1つずつクラスを拡張する方法は知っていますが、複数の基本クラスを使用してクラスを即座に拡張する方法を探しています-私の知る限り、PHPではこれを行うことはできませんが、に頼らずに回避する方法があるはずですclass c extends b
、class b extends a
php - PHPの拡張クラスで親変数を使用する
メインと拡張の2つのクラスがあります。拡張クラスでメイン変数を使用する必要があります。
誰にできるの?
たとえば、無効です。
より透明で効率的なソリューションが必要です:)
java - なぜ final キーワードを避けるのですか?
Javaでは、非抽象クラスの拡張を許可するケースはありますか?
クラス階層がある場合、常に悪いコードを示しているようです。同意しますか、なぜ/しないのですか?
java - 拡張コレクションをパラメータ化する方法
私は ArrayList クラスを拡張しようとしましたが、あまり成功しませんでした。それを拡張して、パラメータ化できるようにしたい。
したがって、通常、次のようなものがあります
私が欲しい
単に ArrayList を拡張するだけでは機能しません。
使用しようとすると、エラーが発生します
MyList 型はジェネリックではありません。引数 <SomeObject> でパラメーター化することはできません
のバリエーションを試しました
クラス名の背後にあるサブオブジェクトを使用すると、動作しているように見えますが、何らかの理由でサブオブジェクト クラスのメソッドが隠されています。
これを正しく機能させる方法についての考えや提案は大歓迎です。
java - 汎用サブクラスへの静的参照を作成できません (Java)
次のコードがあります。
このコードは次を出力します。
私の質問は: T.getName() が SubClass.getName() の値を返さないのはなぜですか? 結局、T == SubClass と指定しました。それとも、ジェネリック参照に対して静的関数呼び出しは無効ですか?
よろしくお願いします!
java - Javaで別のクラスを拡張するクラスに同じ名前の2つの変数を持つ
以下は、プロジェクトのコードの一部です。
これを行うと、Body クラス内に x という2 つの変数が作成され、Body 内に y という別の 2 つの変数が作成されることがすぐにわかりました。これはどのように可能であり、一体なぜJavaはそれを許可しているのでしょうか?
これはクラス Body の正しいコードだと思います。
御時間ありがとうございます
php - クラスを拡張することとPHPに含めることの違いは何ですか?
誰かが私に何の違いを説明できますか
と
は?
クラスを拡張することと.phpファイルを含めることにはどのような長所/短所がありますか?
php - クラス定義時にコードを実行する方法 (オブジェクトのインスタンス化ではありません)
クラスが定義されているときにコードを透過的に実行する方法を探しています。さらに重要なのは、クラスが拡張されたときにです。
たとえば、私が持っている場合:
「A が定義されました!\n」と表示させたいと思います。これは不可能ですか?
php - 拡張クラスのPHP変数
拡張クラスから変数を取得しようとしています。これが私のメインクラスの外観です。
そして、私の拡張クラスは次のようになります(キーワードの多くを削除しました)。
呼び出されているパブリック関数__constructを削除すると、PHPは関数を期待していると愚痴をこぼします。
私の質問は、拡張クラスからメインクラスに変数を取得するにはどうすればよいですか?