タグ付けされた質問 「inheritance」

継承とは、オブジェクト指向プログラミングのシステムであり、オブジェクトは独自の定義を提供する必要なく、前の型によって定義された操作をサポートできます。これは、オブジェクト指向プログラミングにおけるポリモーフィズムの主要なベクトルです。

2
'instanceof'演算子は、インターフェイスとクラスでは動作が異なります
instanceofJava での演算子の以下の動作について知りたいのですが。 interface C {} class B {} public class A { public static void main(String args[]) { B obj = new B(); System.out.println(obj instanceof A); //Gives compiler error System.out.println(obj instanceof C); //Gives false as output } } なぜそうなのですか?そこの間には関係ありませんinterface Cとはclass B、しかし、の場合には、一方、それは偽与えobj instanceof A、それコンパイラエラーを与えますか?

4
Scalaケースクラスの継承
Squerylをベースにしたアプリケーションがあります。モデルをケースクラスとして定義します。これは主に、コピーメソッドがあると便利だからです。 厳密に関連する2つのモデルがあります。フィールドは同じで、多くの操作が共通しており、同じDBテーブルに格納されます。ただし、2つのケースのいずれかでのみ意味がある、または両方のケースで意味があるが異なる動作がいくつかあります。 これまで、モデルのタイプを区別するフラグを持つ単一のケースクラスのみを使用してきました。モデルのタイプに基づいて異なるすべてのメソッドは、ifで始まります。これは煩わしく、タイプセーフではありません。 私がやりたいのは、祖先のケースクラスの共通の動作とフィールドを因数分解し、2つの実際のモデルにそれを継承させることです。しかし、私が理解している限り、Scalaではケースクラスからの継承は嫌われており、サブクラス自体がケースクラス(私の場合ではない)である場合でも禁止されています。 ケースクラスから継承する際に知っておくべき問題と落とし穴は何ですか?私の場合、そうすることは理にかなっていますか?

16
Javaのオーバーライドと非表示-混乱
オーバーライドとJavaでの非表示の違いについて混乱しています。これらの違いについて誰かが詳細を提供できますか?Javaチュートリアルを読みましたが、サンプルコードはまだ混乱していました。 より明確にするために、私はオーバーライドをよく理解しています。私の問題は、一方がインスタンスレベルにあり、もう一方がクラスレベルにあるという事実を除いて、非表示がどのように異なるかがわからないことです。 Javaチュートリアルコードを見る: public class Animal { public static void testClassMethod() { System.out.println("Class" + " method in Animal."); } public void testInstanceMethod() { System.out.println("Instance " + " method in Animal."); } } 次に、サブクラスがありCatます。 public class Cat extends Animal { public static void testClassMethod() { System.out.println("The class method" + " in …

1
派生*からベース*への変換は存在しますが、アクセスできません
cが構造体であり、デフォルトでパブリック継承があるのに、次のコードでこのエラーが発生するのはなぜですか? struct c { protected: int i; public: c(int ii=0):i(ii){} virtual c *fun(); }; c* c::fun(){ cout<<"in c"; return &c(); } class d : c { public: d(){} d* fun() { i = 9; cout<<"in d"<<'\t'<<i; return &d(); } }; int main() { c *cc; d dd; cc = ⅆ …
88 c++  inheritance 

7
このプロパティが派生クラスで上書きされている場合、基本クラスのプロパティを呼び出すにはどうすればよいですか?
私のいくつかのクラスを、ゲッターとセッターの広範な使用から、プロパティのよりPython的な使用に変更しています。 しかし、以前のゲッターまたはセッターの一部が基本クラスの対応するメソッドを呼び出してから、別のことを実行するため、今は行き詰まっています。しかし、これはどのようにプロパティで達成できますか?親クラスでプロパティゲッターまたはセッターを呼び出す方法は? もちろん、属性自体を呼び出すだけで、無限の再帰が得られます。 class Foo(object): @property def bar(self): return 5 @bar.setter def bar(self, a): print a class FooBar(Foo): @property def bar(self): # return the same value # as in the base class return self.bar # --> recursion! @bar.setter def bar(self, c): # perform the same action # as in the …

6
継承を使用してRESTfulAPIをモデル化する方法は?
RESTful APIを介して公開する必要のあるオブジェクト階層があり、URLをどのように構造化し、何を返す必要があるのか​​わかりません。ベストプラクティスが見つかりませんでした。 動物から受け継いだ犬と猫がいるとしましょう。犬と猫のCRUD操作が必要です。また、動物全般の手術もできるようになりたいです。 私の最初のアイデアは、次のようなことをすることでした。 GET /animals # get all animals POST /animals # create a dog or cat GET /animals/123 # get animal 123 / animalコレクションは、まったく同じ構造を持たないオブジェクト(犬と猫)を返したり受け取ったりする可能性があるため、「一貫性がない」ようになりました。異なる属性を持つオブジェクトを返すコレクションを持つことは「RESTful」と見なされますか? 別の解決策は、次のように、具体的なタイプごとにURLを作成することです。 GET /dogs # get all dogs POST /dogs # create a dog GET /dogs/123 # get dog 123 GET /cats # get all …

6
継承と再帰
次のクラスがあるとします。 class A { void recursive(int i) { System.out.println("A.recursive(" + i + ")"); if (i > 0) { recursive(i - 1); } } } class B extends A { void recursive(int i) { System.out.println("B.recursive(" + i + ")"); super.recursive(i + 1); } } 次にrecursive、クラスAを呼び出します。 public class Demo { public static …

7
XMLシリアル化と継承されたタイプ
前の質問に続いて、オブジェクトモデルをXMLにシリアル化する作業を行っています。しかし、私は今問題に遭遇しました(クエルサプライズ!)。 私が抱えている問題は、抽象基本クラス型のコレクションがあり、具体的な派生型が入力されていることです。 関係するすべてのクラスにXML属性を追加するだけで十分であり、すべてが桃色になると思いました。悲しいことに、そうではありません! だから私はグーグルでいくつかの掘り下げをしました、そして今私はそれがうまくいかない理由を理解しました。その中で実際にあるが、シリアライズするためにいくつかの巧妙な反射をやってXMLから/に反対し、その抽象型に基づいているので、それがに話して何地獄を把握することはできません。結構です。XmlSerializer 私はCodeProjectでこのページに出くわしましたが、それは大いに役立つかもしれません(まだ完全に読んだり消費したりする)が、この問題をStackOverflowテーブルにも持ってきて、きちんとしたものがあるかどうかを確認したいと思いましたこれを可能な限り迅速/最軽量の方法で稼働させるためのハック/トリック。 私が付け加えなければならないことの一つは、私がルートを下りたくないということXmlIncludeです。単にそれとの結合が多すぎて、システムのこの領域は開発が進んでいるので、それは本当にメンテナンスの頭痛の種になるでしょう!

11
Pythonの継承のポイントは何ですか?
次のような状況があるとします。 #include <iostream> class Animal { public: virtual void speak() = 0; }; class Dog : public Animal { void speak() { std::cout << "woff!" <<std::endl; } }; class Cat : public Animal { void speak() { std::cout << "meow!" <<std::endl; } }; void makeSpeak(Animal &a) { a.speak(); } int …

7
静的メソッド継承の正しい代替手段は何ですか?
静的メソッドの継承がC#でサポートされていないことを理解しています。また、開発者がこの機能の必要性を主張する多くの議論(ここを含む)を読みました。典型的な応答は「静的なメンバーの継承が必要な場合、設計に欠陥があります」です。 OK、OOPは静的継承についても考えたくないので、それに対する私の明らかな必要性は私の設計のエラーを示していると結論付けなければなりません。しかし、私は立ち往生しています。私はこれを解決するためにいくつかの助けを本当にいただければ幸いです。これが課題です... 複雑な初期化コードをカプセル化する抽象基本クラス(Fruitと呼びましょう)を作成したいと思います。一部のコードは仮想メソッド呼び出しに依存するため、このコードをコンストラクターに配置することはできません。 Fruitは、他の具象クラス(Apple、Orange)に継承されます。各クラスは、インスタンスを作成および初期化するために、標準のファクトリメソッドCreateInstance()を公開する必要があります。 静的メンバーの継承が可能であれば、ファクトリメソッドを基本クラスに配置し、派生クラスへの仮想メソッド呼び出しを使用して、具象インスタンスを初期化する必要がある型を取得します。クライアントコードは、Apple.CreateInstance()を呼び出すだけで、完全に初期化されたAppleインスタンスを取得できます。 しかし、明らかにこれは不可能なので、同じ機能に対応するために私のデザインをどのように変更する必要があるかを誰かに説明してもらえますか。
83 c#  .net  inheritance  static 

3
Javascriptの継承:スーパーコンストラクターを呼び出すか、プロトタイプチェーンを使用しますか?
ごく最近、MDCでのJavaScript呼び出しの使用法について読みました https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call 以下に示す例の1つのリンク、私はまだ理解していません。 なぜ彼らはここでこのように継承を使用しているのですか Prod_dept.prototype = new Product(); これは必要ですか?でスーパーコンストラクターへの呼び出しがあるため Prod_dept() とにかく、このように Product.call これは一般的な動作から外れているだけですか?スーパーコンストラクターの呼び出しを使用するか、プロトタイプチェーンを使用する方がよいのはいつですか? function Product(name, value){ this.name = name; if(value >= 1000) this.value = 999; else this.value = value; } function Prod_dept(name, value, dept){ this.dept = dept; Product.call(this, name, value); } Prod_dept.prototype = new Product(); // since 5 is less …

6
継承:「A」は「B」のアクセスできないベースです
$ cat inheritance.cpp #include <iostream> using namespace std; class A { }; class B : private A { }; int main() { A* ab = new B; } $ $ g++ inheritance.cpp inheritance.cpp: In function 'int main()': inheritance.cpp:9: error: 'A' is an inaccessible base of 'B' $ 私はこのエラーを理解していません。 私が理解しているように、そしてこのチュートリアルが確認しているように、private継承はメンバーがclass B外の世界に見える方法を変えるだけです。 …
82 c++  inheritance 

7
Classオブジェクト(java.lang.Class)とは何ですか?
のJavaドキュメントはClass次のように述べています。 Classオブジェクトは、クラスがロードされるときにJava仮想マシンによって、およびdefineClassクラスローダーのメソッドの呼び出しによって自動的に構築されます。 これらのClassオブジェクトは何ですか?それらは、を呼び出すことによってクラスからインスタンス化されたオブジェクトと同じnewですか? また、たとえば、継承していなくても、object.getClass().getName()どのようにしてすべてをスーパークラスClassにタイプキャストできますjava.lang.Classか?

11
super()はいつ使用しますか?
現在、Javaコースでクラスの継承について学習していますが、いつsuper()呼び出しを使用するかわかりませんか? 編集:使用されている コードのこの例を見つけました:super.variable class A { int k = 10; } class Test extends A { public void m() { System.out.println(super.k); } } したがって、ここでは、を使用してスーパークラスの変数にsuperアクセスする必要があることを理解していますk。しかし、他の場合、何をしsuper();ますか?そのままで?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.