問題タブ [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.
java - Javaの抽象変数?
私はこれが簡単で可能だったc#から来ています。
私はこのコードを持っています:
しかし、Eclipseは私が不正な修飾子を使用していると言っています。
私はこのクラスを持っています:
Eclipseがプロンプトを表示するように変数とメソッドを定義したいのですが、実装されていない抽象変数とメソッドがあります。
抽象クラスを定義する必要があるので、抽象を実装するように求められますか?
編集1
データベーステーブルごとに異なるクラスを作成します。各クラスには、例外なく、独自のTABLENAME変数が必要です。抽象クラスを拡張する新しいクラスを作成するたびに、この変数が静的であることを確認する必要があります。
次に、抽象クラスにメソッドがあります。例:init();
このinit()メソッドでTABLENAMEを呼び出す場合、サブクラスから値を取得する必要があります。
このようなものもうまくいくはずです
編集2
抽象的に定義された名前を持つ各クラスで定義された定数(静的)が必要です。
- 変数TABLENAMEを抽象で定義しましたが、値が指定されていません。
- clsContactGroupsを作成します。TABLENAMEを実装するように求められます。ここでデータを取得します。例:TABLENAME = "contactgroups";
- 2番目のクラスclsContactsを作成します。これにより、TABLENAMEを実装するように求められます。ここで、データを取得します。例:TABLENAME = "contacts";
等...
php - PHP の C++ の仮想関数に相当するものは何ですか?
ですかabstract function xxx
?
プライベートメソッドも仮想であることを示しているように見えるテストを作成しましたか?
出力は2
php - 抽象キーワードによるPHPの静的クラス?
PHPのマニュアルによると、次のようなクラスです。
インスタンス化できません。インスタンスのないクラスが必要な場合、たとえばレジストリパターンの場合:
クラスを単純に抽象として宣言するのは良いスタイルと見なされますか?そうでない場合、抽象クラスと比較して、コンストラクターを保護されたメソッドとして非表示にすることの利点は何ですか?
質問の理由:私が見る限り、マニュアルでは抽象クラスをインスタンス化の可能性がある後のクラスの青写真のように参照しているため、機能が少し乱用される可能性があります。
更新:まず第一に、すべての答えに感謝します!しかし、多くの答えはまったく同じように聞こえます。「抽象クラスをインスタンス化することはできませんが、レジストリの場合は、シングルトンパターンを使用しないのはなぜですか?」
残念ながら、それは多かれ少なかれ私の質問の繰り返しでした。シングルトンパターン(別名非表示)を使用することの利点は、それを__construct()
宣言するだけでそれabstract
について心配する必要がないことと比較して何ですか?abstract
(たとえば、クラスが実際に使用されていないなど、開発者間の強い意味合いです。)
c++ - 派生クラスであると期待して、ベース内で抽象を使用しますか?
次の簡単なコードを使用してください。
私が望むのは、派生クラスで実装されることを期待する関数を呼び出す関数を持つ抽象クラスを構築することです
問題は、私がそれを機能させることができないということです。コンパイラは、foo() への参照 (またはそのようなもの) が x() で実行されるのを見つけることができないため、コンパイルできないと言います基本クラス。これは機能しますか?誰かが私にこれの例を教えてもらえますか?
編集:「foo();」の場合は機能しないようです クラスA(ベースのもの)のデストラクタの中にあります...
それは私を混乱させました。=[
EDIT2:これはどれほど興味深いものでしたか。callfoo(){ foo(); を作成しました。これで問題なくコンパイルできますが、基本クラス A のデストラクタ内から純粋な抽象関数を直接呼び出そうとすると、エラーが発生します... 変です。誰でもこれについて何か考えがありますか?O_o
これについて何か助けてください。
ありがとう、
ジョナサン
アップデート
デストラクタの外で機能しました。今、私は混乱しました。
A(ベース)クラスのデストラクタ内に「foo()」を入れてみてください。少なくとも私はコンパイルしていません...
助けてください。
perl - PerlOOPで抽象メソッドを継承するときにメソッドが見つからないというエラー
スーパークラスからメソッドを呼び出すサブクラスがあります。スーパークラスのメソッドは、スーパークラスで抽象(実際には抽象ではない)として定義されているが、サブクラスに実装されているメソッドを使用します。
例えば:
今私がするとき:
...抽象メッセージを呼び出し、指定されたエラーメッセージを受け取ります。スーパークラスから抽象メソッドを削除し、実装をサブクラスのままにすると、メソッドが認識されず、サブルーチンの抽象メソッドが見つからないというエラーが発生します。
c# - 非抽象クラスから抽象クラスを派生させる
非抽象クラスから抽象クラスを派生させても大丈夫ですか、それともこのアプローチに何か問題がありますか?
ここにちょっとした例があります:
上記の例では、Task クラスを直接インスタンス化したいので、クラスを抽象化したくありません。PeriodicalTask は Task から機能を継承し、いくつかの追加メンバーを追加する必要がありますが、直接インスタンス化したくありません。PeriodicalTask の派生クラスのみをインスタンス化する必要があります。
c# - C#の抽象サブクラスを持つ基本クラス?
2つの質問:
コンストラクターに何かを追加できるようにするにはどうすればよいですか?元のコンストラクターは引き続き実行されますか?
サブクラスがParametersクラスにメンバーを追加できるようにするにはどうすればよいですか?
c++ - 抽象クラスのサイズ
抽象クラスのサイズを確認するにはどうすればよいですか?
これは抽象クラスなので、このクラスのオブジェクトを作成できません。「sizeof」演算子を使用して抽象クラス A のサイズを見つけるにはどうすればよいですか?
c# - 抽象クラスから使用されるメソッドのテスト
組み込みの抽象クラスのメソッドを使用してブール値を作成するメソッド(runMethod())を単体テストする必要があります。抽象クラスのメソッドは、XmlDocumentsとノードを使用して情報を取得します。コードは次のようになります(これは非常に単純化されていますが、私の問題を示しています)
したがって、コードは作成されたXmlDocumentからプロパティを取得し、それを使用して結果をブール値に形成します。ここで私の質問は、ブール値の結果の動作を確実に制御するための最良の解決策は何であるかということです。モックの可能性のためにMoqを使用しています。
このコード例はおそらく少しあいまいですが、私が示すことができる最高のものです。皆さんがお役に立てば幸いです。
編集:基本的に必要なのは
、AbstractInheretクラスのテスト中にgetProperty()を制御できる必要があることです。
java - インターフェイスを実装するクラスが静的メソッドを実装することを確認する方法はありますか?
まず、erickson の「Java インターフェースで静的メソッドを定義できないのはなぜですか?」に対する有益な回答を読みました。. この質問は「なぜ」ではなく、「どうやって?」についてです。
編集:私の元の例は不適切でしたが、以下に残します。
ほとんどの場合、私がやりたいことはやり過ぎだと確信していますが、それが必要になるシナリオが 1 つあります。
もう一度ParametricFunction
例を挙げます。ここで、ベッセル関数のような複雑な関数を考えてみましょう。ここではルックアップ テーブルが適切です。これは初期化する必要があるため、2 つのオプションはパラメーターをコンストラクターに直接渡すか、init(double[] parameters)
. getValue(double x)
後者には、呼び出しごとに初期化をチェックするArrayIndexOutOfBoundsException
必要がある (または初期化チェックと見なす必要がある)という欠点があるため、タイムクリティカルなアプリケーションでは、コンストラクター メソッドを使用することをお勧めします。
これは、別の問題、つまりインターフェースでのコンストラクターの不可能性に関係しています。そこで良い解決策は何でしょうか?もちろん、このinit(double[] parameters)
アプローチを使用することもできますが、そうしない理由を述べました。
(編集:OK、ここではインターフェイスを実装する抽象クラスで十分です)
ParametricFunction
ここで、が特定のパラメータ (正の整数など) のみを許可すると仮定します。コンストラクターに渡されたパラメーターの有効性を確認する方法は? -exceptionIllegalArgument
をスローすることも可能ですが、 acheckParametersValidity(double[] parameters)
の方がはるかに便利です。ただし、パラメータのチェックは構築前に行う必要があるため、静的メソッドである必要があります。ParametricFunction
そして、インターフェイスを実装するすべてのクラスがこの静的メソッドを定義していることを確認する方法を知りたいのです。
私はこの例がかなり人為的であることinit
を知っています.インターフェースを介してメソッドを単純に使用しない理由は議論の余地があります.私はまだ答えを知りたいです. 嫌ならアカデミックな問題と考えてください。
(元の例)
したがって、基本的には、1 つのインターフェイスで通常のメソッドとメソッドなどの両方を提供する必要がありgetSimilarObject
ます。(構成された)例の場合
その後
これは現在のJava標準では許可されていないため、これに最も近いものは何ですか?
この背後にあるアイデアは、いくつかParametricFunction
の をパッケージに入れ、Reflection を使用してそれらをすべてリストし、ユーザーがどれをプロットするかなどを選択できるようにすることです。明らかに、利用可能な の配列を含むローダー クラスを提供できますがParametricFunction
、新しいものが実装されるたびに、そこに追加することも覚えておく必要があります。
編集:それを呼び出す例は
と呼び出しevaluate("Parabola", 1, new double[]{1,2,0});
ます。