問題タブ [abstract]

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 に答える
3280 参照

c# - 仮想クラスの抽象メソッド

多くの仮想メソッドを持つ ac# クラスがあります。これらのメソッドの一部は本質的に抽象的です (サブクラスで完全に実装され、基本クラスは空です)。

コンパイルするには、何をすべきかについてのコメントを付けて、基本クラスに InvalidOperationException をスローしています。これはただ汚いと感じます。

クラスを設計するためのより良い方法はありますか?

編集:カナダで実行されるアプリケーションの中間層用です。メソッドの半分は汎用であるため、仮想です。メソッドの半分は州固有のものです。

これが理にかなっていることを願っています

0 投票する
5 に答える
1673 参照

c# - 抽象基本クラスまたはインターフェイス? どちらも正しくないようです

次のコードがあるとします。

(ある程度期待される) 出力 "We have 2 bars, rejoice!" が得られます。

これは素晴らしいことです。ビールを飲む場所が 2 倍になりましたが (どうやら)、私が本当に必要としているのは、各クラスに独自のキャッシュを持たせることです。このキャッシュをサブクラスに実装したくない理由は、抽象クラスに、キャッシュを操作できる (つまり、それらすべてを反復する) 必要があるいくつかのメソッドがあるためです。これを行う方法はありますか?のインターフェイスの使用を検討しましたfooが、インターフェイスでは静的メンバーをインターフェイスの一部として定義することはできません。

0 投票する
4 に答える
53238 参照

java - なぜJavaインターフェースメソッドをabstractとして宣言するのでしょうか?

私は今日、Eclipse の「プル・インターフェース」リファクタリング機能を使用して、既存のクラスに基づいたインターフェースを作成しました。このダイアログ ボックスでは、新しいインターフェイスのすべての新しいメソッドを「抽象」メソッドとして作成することができました。

その利点は何でしょうか。

インターフェースメソッドを抽象として宣言できるという事実は、特に推奨されていない言語の不要で無害な機能だと思いました。

Eclipse がそのようなスタイルをサポートする理由、または誰かが自発的にサポートすることを選択する理由は何ですか?

明確化: インターフェイス メソッドが抽象である理由を尋ねているわけではありません。それは明らかです。それらがインターフェースにある場合、とにかく抽象的であるため、それらを抽象としてマークすることを明示的に選択する理由を尋ねています。

0 投票する
4 に答える
4475 参照

java - 抽象継承とジェネリック (トランプを使用)

それで、私はJavaでいくつかのトランプに取り組んできました。(実用的な目的ではありません。ただカードをプレイするのが好きで、良い練習になっています)今、私はいくつかのカード構造、デッキ、ハンド、パイルなどを作成しています。それらはすべて本質的に同じです。いくつかの継承を使用したいと考えています。

私が遭遇した問題は、各構造のコアが何らかのタイプのコレクションであるということですが、すべてが同じコレクション タイプを使用しているわけではありません。デッキは基本的にスタックとして機能することが最も多いため、デッキはスタックを使用します。しかし、ハンドは ArrayList を使用します (ArrayList よりも効率的な使用法があれば、それも知っておくとよいでしょう)。したがって、抽象クラスを作成しようとするときは、抽象メソッドの使用を避けたいと思います (コードを節約するために抽象クラスを作成するという本来の目的が無効になるため)。しかし、明らかな理由から、これらのメソッドはすべてコア コレクションに依存していますが、コレクションの型がわかりません。これは私がこれまでに試したことです:

まず、私の変数名を許してください。以前はすべてに「theVariable」という名前を付けていましたが、「el」を使用する方が面白いと判断しました。(なんらかの方法で自分を楽しませる必要がありますよね?) また、protected を使用したのは単純化のためでした。

現在、抽象クラスで変数を定義し、子クラスでそのエイリアスを定義するという一般的な考え方は機能しているようですが、それが優れた方法であるかどうかはわかりません。私が抱えている本当の問題は、コンストラクターにあります。カードの配列を受け入れる Pair のコンストラクターは機能しません。カードを追加するには、親コンストラクターがカードを追加しようとする前に、まずコレクション (この場合は ArrayList) を作成する必要があるためです。これを回避する方法はありますか? これは継承を処理する実行可能な方法ですか?

0 投票する
4 に答える
10158 参照

latex - Latex ドキュメントの同じページにアブストラクトとイントロダクションを配置するにはどうすればよいですか?

論文を会議に送るために、ドキュメントのレイアウトを変更する必要があります。私のアブストラクトは現在、別のページにあります。イントロダクションは、別のページではなく、アブストラクトの直後に配置する必要があります。

アブストラクトとイントロダクションを同じページに表示するにはどうすればよいですか?

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

c# - コンパイラは、シールされたクラスによって実装された仮想メソッドをどのように最適化しますか

次のコードがどのように最適化されているのか疑問に思っています。具体的には、仮想通話と直接通話に関するものです。すべてが最適化されていると思う方法についてコメントしましたが、それらは単なる推測です。

0 投票する
8 に答える
41377 参照

c# - C#、メソッドのような「静的抽象」を実装する

最近、「静的抽象」メソッドが必要と思われる問題が発生しました。なぜそれが不可能なのかはわかっていますが、どうすればこの制限を回避できますか?

たとえば、説明文字列を持つ抽象クラスがあります。この文字列はすべてのインスタンスに共通であるため、静的としてマークされていますが、このクラスから派生したすべてのクラスが独自のDescriptionプロパティを提供することを要求したいので、抽象としてマークしました。

もちろんコンパイルされません。インターフェイスを使用することを考えましたが、インターフェイスに静的メソッドシグネチャが含まれていない可能性があります。

単に非静的にし、そのクラス固有の情報を取得するために常にインスタンスを取得する必要がありますか?

何か案は?

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

uml - UML では、抽象メソッドの具体的な実装を示す必要がありますか?

具象クラスが純粋仮想メソッドを定義する抽象クラスから継承する UML を描いています。このメソッドを具体的なクラスにも表示する必要がありますか? これは、抽象クラスから継承することによって暗示されます。

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

c# - 抽象クラスで定義された非抽象イベントは、派生クラスのデザイナーに表示されません

以下にリストされているクラスを使用して、List<T> を受け入れ、内部 ComboBox の選択が変更されたときに T 型のオブジェクトを返すことができる ComboBox をラップする UserControl を作成しています。

期待どおりにすべてがコードで正常に動作しますが、コントロールを使用しているときに SelectedItemChanged イベントをデザイナーに表示できません。抽象基本クラスが非抽象の場合は正常に機能しましたが、本質的に重複する 5 つのコントロールを 1 つに凝縮しようとしています。

重要でない部分は切り取られています。

EDIT : コードを壊す問題を修正しました。名前空間とフォームの両方が UserComboTest という名前であることが判明したため、完全修飾型名 (UserComboTest.UserDropDownList) をシリアル化すると、名前空間ではなく、フォームの下のメンバーまたはクラスであると想定されました。つまり、存在しない UserComboTest.UserComboTest.UserDropDownList を探していると考えていました。フォームの名前を UserComboTest.UserComboTestForm に変更すると、問題の半分が解決しました。

まだ残っているのは、デザイナーが SelectedItemChanged イベントを表示しないという事実です。手動で設定すると削除されるため、InitializeComponent の外部で設定するか、シリアル化する方法を見つける必要があります。

0 投票する
4 に答える
18162 参照

java - Java ジェネリック、拡張ジェネリック、および抽象クラス

次のクラスをセットアップしました。

にたどり着くまではすべて順調ResourceImplです。typeProcessImplの境界付きパラメーターの有効な代替ではないと言われています。<S extends Process<T,S>>Resource<T,S>

私はこれを回避するためにさまざまな方法を試しましたが、壁にぶつかり続けています。

誰にもアイデアはありますか?