問題タブ [abstract-class]

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 投票する
5 に答える
5103 参照

java - インターフェースだけでなく抽象クラスも必要ですか?

インターフェイスは 100% 抽象クラスであるため、インターフェイスを使用して効率的なプログラミングを行うことができます。抽象クラスがインターフェースよりも優れている状況はありますか?

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

php - 子クラスに非厳密なメソッド要件を指定できますか?

子クラスに必要なメソッドを指定したい基本クラスがありますが、それら自体は実装しません。ただし、子クラスのメソッドは、基本クラスの定義とは異なる数のパラメーターを持つ場合があります。

抽象メソッドでこれを試してみましたが、php はこれを許可しません。出来ますか?

0 投票する
9 に答える
17171 参照

java - すべての具体的なメソッドを持つ抽象クラス

クラス内のすべてのメソッドが具体的であるときに、誰かがクラス抽象を宣言するための実用的なプログラミング状況はありますか?

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

python - Pythonの抽象クラスとインターフェースの違い

Pythonの抽象クラスとインターフェースの違いは何ですか?

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

c# - C# で読み取り専用 (不変) オブジェクト インターフェイスを実装する

私の目標は、ほとんどのシナリオでオブジェクトが完全なインターフェイスのサブセットである「読み取り専用インターフェイス」を介して使用されるようにすることです。

  • constたとえば、C++ を使用している場合は、オブジェクトを返すだけです。
  • C# では、インターフェイスでこれを実現できれば、読み取り専用のインターフェイスを実装して、どこでも使用できます。ただし、インターフェイスでは許可されていない演算子のオーバーロードが必要です。そのため、抽象基本クラスを使用する必要があります。
  • しかし、抽象基本クラスを定義すると、派生型のアクセシビリティを変更することはできません。

では、C# で目標を達成するにはどうすればよいでしょうか。

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

c++ - C++ での派生クラスの登録

編集: 回答のコメントに続くマイナーな修正 (仮想印刷; mpInstance を返す)。

任意の基本クラスから子クラスを派生できるシステムを作成しようとしています。その実装は、基本クラスの実装を置き換える必要があります。

基本クラス オブジェクトを作成および使用するすべてのオブジェクトは、オブジェクトの作成または呼び出しの方法を変更してはなりません。つまり、実際に Child クラスを作成するときでも、BaseClass.Create() を呼び出し続ける必要があります。基本クラスは、オーバーライドできることを認識していますが、それらをオーバーライドする具象クラスは認識していません。

そして、すべての Child クラスの登録を 1 か所で行うようにしたいと考えています。

これが私の実装です:

この実装を使用して、他のクラスからこれを行っている場合:

出力に「Child」が含まれることを期待しています。

このデザインどう思いますか?物事を複雑にしすぎたので、もっと簡単にできるでしょうか? また、抽象クラスから継承したテンプレートを作成してもよろしいですか?

dynamic_pointer を使用する必要がありました (それ以外の場合はコンパイルしませんでした) - 何かが間違っているというヒントですか?

ありがとうございました。

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

c++ - C++で抽象基本クラスにする静的関数を持つクラス

次のようなユースケースがあります

fooを抽象基本クラスにしたいのですが、仮想関数を静的にすることはできないため、makeをこの抽象ベースに含めることはできません。

このような

抽象クラスでメソッドを非静的にするか、派生クラスに静的メソッドを持たせることは、設計の観点から優れたアプローチです。

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

java - Java の抽象クラスとメソッド、継承

クラス A から継承するクラス B があります。スーパークラス A は抽象クラスで、1 つの抽象メソッドが含まれています。クラス B に抽象メソッドを実装したくないので、クラス B も抽象として宣言する必要があります。クラスB抽象を宣言すると、2つのことがうまくいきます(プログラムは正しくコンパイルおよび実行されます):

1.) クラスが抽象であるにもかかわらず、クラス B で抽象メソッドを宣言しません。クラスがクラス A の抽象メソッドを継承しているため、これはうまくいくと思います。これは、クラスを抽象として宣言するのに十分です。クラスで直接宣言された他の抽象メソッドは必要ありません。

2.) クラス A で宣言されているのと同じ抽象メソッドをクラス B で宣言します。これはある種のオーバーライド (?) であり、Java でのオーバーライドと同じ意味ではありません (同じヘッダーを使用しますが、異なる実装を提供します)。 )、ここではメソッドの同じヘッダーを再度使用します。

どちらも機能しており、両方とも問題ないかどうか、およびそれらの一部が他のものよりも優先される (より正しい) かどうかはわかりません。2 つの方法は同じですか (Java にとって同じ意味ですか)?

ここでは、いくつかのクラスの例を示します。これにより、意味がより明確になります。

ケース 1.):

ケース 2.):

よろしく

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

c# - このデザインは良いアイデアですか - インターフェイスと抽象クラス

次のようなことができるようになりたいです。

このようなものは多すぎるでしょうか:

http://img81.imageshack.us/img81/427/diagramcm3.jpg

またはこれはより良いでしょうか:

http://img301.imageshack.us/img301/4136/presentation1nh9.jpg

私が何をしようとしているのか理解するのが難しい場合は申し訳ありませんが、基本的には、一般的な行コレクションを除いて、2 つのオブジェクトが共通のプロパティを共有します。これを最もクリーンな方法で行いたいと思います。

パワーポイントで作った下手な図で申し訳ありません:)