問題タブ [abstract-methods]

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.

0 投票する
2 に答える
93126 参照

python - python@abstractmethodデコレータ

私は抽象基本クラスに関するPythonドキュメントを読みました:

ここから:

abc.abstractmethod(function) 抽象メソッドを示すデコレータ。

このデコレータを使用するには、クラスのメタクラスがそれであるABCMetaか、それから派生している必要があります。から派生したメタクラスを持つクラスは、ABCMeta その抽象メソッドとプロパティがすべてオーバーライドされない限り、インスタンス化できません。

そしてここに

@abstractmethod実装する必要のあるdraw()などのメソッドにデコレータを適用できます。Pythonは、メソッドを定義しないクラスに対して例外を発生させます。例外が発生するのは、メソッドがないサブクラスのインスタンスを実際に作成しようとした場合のみであることに注意してください。

私はそれをテストするためにこのコードを使用しました:

コードはうまくいくので、わかりません。入力すると、次のc.abstractMethodようになります。

私がここで欠けているものは何ですか?ConcreteClass 抽象メソッドを実装する必要がありますが、例外はありません。

0 投票する
6 に答える
2756 参照

java - C++およびJavaでの抽象メソッドとオーバーライド関数

C ++とJava、またはそれらの尊重ルールでは、抽象メソッドのオーバーライドにどのような制限が課せられますか。引数または戻り型を一致させる必要があります。私は通常、戻り型のみで引数なしで実装された抽象関数を目にします。残りを指定するのは派生クラス次第です。それはどのように正確に機能しますか?

0 投票する
7 に答える
1999 参照

java - 抽象クラスは独自の抽象メソッドを使用していますか?

ゲーム内のコードを調べていると、これまでに見たことのないものに出くわしましたが、何が起こっているのかよくわかりません。

何が起きてる?それが要求するとどうなりますentityInit()か?

0 投票する
13 に答える
11870 参照

java - 抽象的ではないがオーバーライドする必要があるメソッドを作成する方法はありますか?

子クラスにスーパークラスの非抽象メソッドをオーバーライドさせる方法はありますか?

親クラスのインスタンスを作成できる必要がありますが、クラスがこのクラスを拡張する場合、いくつかのメソッドの独自の定義を提供する必要があります。

0 投票する
1 に答える
2397 参照

c# - C# の抽象メソッド

正直なところ、なぜこれが私を失望させているのかわかりません。

上記のコードは次のエラーをスローしています。

BankAccount.MakeWithdrawal()' は抽象的ですが、非抽象クラス 'Worksheet7.BankAccount' に含まれています

これは、クラスを抽象として宣言したにもかかわらずです。ここで欠けているもの、または欠けているビジュアルスタジオの前提条件はありますか?

0 投票する
3 に答える
2522 参照

java - 抽象メソッドの宣言中にデフォルトの戻り値を指定する

私は次のクラスを持っています

インターフェース:

抽象クラスを継承するクラス:

Eclipse で MyClass を作成すると、checkSomething() メソッドが自動的に作成されますが、デフォルトの戻り値は false です。抽象メソッド定義でデフォルトの戻り値の型を指定する方法はありますか?

0 投票する
1 に答える
1763 参照

yii - Yiiの振る舞いにおける「抽象的な」メソッド

私はYiiアプリケーションを開発してきました。そして、モデルの振る舞いで、ある種の「抽象的な」メソッドを宣言することが可能かどうか疑問に思っています。宣言の直後に使用することは不可能であることを私は知っています:

このクラスのインスタンスが必要だからです。しかし、Yiiが完全な魔法であることも知っています:)

必須の順序で動作からメソッドを再宣言する所有者クラスを作成したいだけです。もちろん、動作に加えてインターフェースを使用することもできますが...

伝えたいことがなかったり、はっきりしないことがあったらごめんなさい。ただ聞いてください、そして私は私が何を意味するかを説明しようとします。

誰かがこれについて何か知っていますか?

前もって感謝します。

UPD

Yiiは単なるPHPであることを私は理解しています。PHPを拡張しません。それはその上の上部構造です。また、PHPには多重継承がないため、多重継承はありません。

動作メソッドはabstractキーワードを使用して宣言できないことを理解しています。そのため、私は「abstract」という単語を引用符で囲んで書いています。しかし、何でも。私は行動がどのように機能するかを知っています。

私の質問は、モデル(CActiveRecordの子など)に何らかのメソッドを宣言するように強制できるかどうかでした。

たとえば、私の目的のために、私は次のようなことをすることができます:

したがって、この動作をモデルにアタッチしてメソッドdoFantasticThingsを呼び出すと、このメソッドはmodel(owner)からメソッドprepareForFantasticを呼び出そうとします。また、モデルにメソッドprepareForFantasticがない場合、宣言されていないメソッドが呼び出されるため、宣言された新しい例外がスローされます。

私は自分の質問に自分で答えたようです:)これについてどう思いますか?

UPD2

はい、「abstract」メソッドを呼び出さないと、宣言されていないことがわかりません。これは、解釈可能な言語の「魅力」です:)コードが実行されるまで、エラーがあるかどうかはわかりません。ただし、これについてできるだけ早く知ることができれば素晴らしいと思います。たとえば、FantasticBehavior-classのインスタンスがモデルにアタッチされると、の子をスローしてCException、モデルで宣言する必要のあるメソッドを示すことができます。これを達成するために、以下のようなものを使用できます。

attachクラスのメソッドをオーバーライドしCBehavior、「abstract」メソッドが宣言されているかどうかを確認する必要があります。メソッドabstractMethodsは、リストの「抽象」メソッドを取得するために使用されます。

attachBehaviorイベントがあるかどうかわかりません。もしそうなら、attachメソッドをオーバーライドする代わりにそれを使用することができます。

このアイデアを使用する「abstract」メソッドを使用した動作の基本クラス。

あなたはこのことについてどう思いますか?

たぶん将来、私はYiiを拡張して、有名で金持ちになるのでしょうか?:))

0 投票する
2 に答える
847 参照

java - パターンデザインスタイルの抽象メソッドで抽象クラスを定義する

デザインパターンを使用して抽象クラスで抽象メソッドを定義する方法と、メソッドの一部のメソッドで子クラスでの動作をオーバーライドまたは変更する方法はありますか?この例でpublic abstract class GameCharacterは、attackパターンのようなメソッドを用意します(GameCharacter子クラスで*オーバーライド*されるように、のメソッドの一部と空のままにするメソッドの一部を定義します)。

0 投票する
2 に答える
198 参照

php - PHP、OOP、インターフェース

私はPHPを勉強していて、考えていました、

抽象クラスまたはインターフェース内のメソッドは、抽象メソッドと呼ばれます。

私の質問:

抽象クラス内で定義されている抽象メソッドはありますか?/インターフェイスはサブクラス内に含まれていませんか?

それが本当なら、それは次のことを意味します。

サブクラス内のみが抽象として定義されていないメソッド/プロパティです。これは、実装時にインターフェイスがサブクラスを作成できないことを意味します。

次の意味もあります。

抽象クラス/インターフェースから定義された抽象メソッドが、抽象クラス/インターフェースを拡張/実装するクラスである場合、メソッドのシグネチャを見て、それらのメソッドがオーバーライドされていることを確認するだけです(実際にはオーバーライドしていないので、書き換えはより良い言葉です)言う(オーバーライドが聞こえますが))。

抽象的な方法を専門的に理解するのを手伝ってくれる人がいるなら、良い一日を。

0 投票する
0 に答える
244 参照

c# - 抽象テスト メソッドの名前を変更する (Visual Studio / c#)

質問: メソッド名を使用する代わりに、手動でテスト メソッドに名前を付ける方法はありますか?

背景: 私は現在、BizTalk 開発者として活動しており、BizUnit フレームワークを使用してプロジェクトをテストしています。

これらの単体テストを実行するには、c# を使用して Visual Studio でビルドされた単体テスト用の内部機能を使用します。そこから、bizunit フレームワークを呼び出して、実際の (biztalk 固有の) テストを実行します。

これに関する厄介な点は、BizUnit が必要とするテストケースを作成するために、数行の「ボイラープレート」コードが必要なことです。これらのステップを実行する抽象クラスを使用すると、必要な実際の開発が容易になります。さらに、抽象クラスを使用すると、(いくつかのテンプレート メソッドを使用して) ドキュメント構造に関する「内部ポリシー」を適用できます。

抽象基本クラス「IBaseTestScenario」には、「test」と呼ばれる実際のメソッドが含まれています。

この構造を使用して、ステップが実行される順序を強制できます。適切な名前と説明を提供するように開発者に「思い出させる」ことができます (メソッドは抽象的であるため、情報を提供する必要があります)。テスト (シナリオごとに固有) は定型コードから分割されます。

シナリオを作成する場合は、この基本クラスを拡張して、シナリオ固有の情報を含む抽象メソッドを実装するだけです。

テストを実行するまで、これはすべてかなりきれいに見えます...

テスト結果ウィンドウでは、すべてのテストは「テスト」と呼ばれ、それらを区別できるように「クラス名」列をビューに追加する必要があります。

この問題を解決する手っ取り早い (そしてやや汚い) 方法は、インターフェースの TestMethod アノテーションを削除し、次の「呼び出し元」をそれぞれの単一の実装に配置することです。

テストメソッドの名前を変更する (より良い) 方法を知っている人はいますか? インターフェイスの既存の抽象メソッド「getName()」を使用するのが理想的です...

敬具、

ステイン