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

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

10
Swiftで保存されたプロパティをオーバーライドする
コンパイラーが格納されたプロパティを別の格納された値(これは奇妙に思われる)で上書きできないことに気づきました: class Jedi { var lightSaberColor = "Blue" } class Sith: Jedi { override var lightSaberColor = "Red" // Cannot override with a stored property lightSaberColor } しかし、私は計算されたプロパティでこれを行うことが許可されています: class Jedi { let lightSaberColor = "Blue" } class Sith: Jedi { override var lightSaberColor : String{return "Red"} } 別の値を指定できないのはなぜですか? 格納されたプロパティでオーバーライドするのが嫌悪で、計算されたコーシャでそれを行うのはなぜですか?彼らはどこを考えていますか?

4
JavaScriptの継承:Object.createとnew
JavaScriptでは、これら2つの例の違いは何ですか。 前提条件: function SomeBaseClass(){ } SomeBaseClass.prototype = { doThis : function(){ }, doThat : function(){ } } Object.createを使用した継承の例A: function MyClass(){ } MyClass.prototype = Object.create(SomeBaseClass.prototype); 新しいキーワードを使用した継承例B function MyClass(){ } MyClass.prototype = new SomeBaseClass(); どちらの例も同じことをするようです。いつどちらを選ぶか? 追加の質問:以下のリンク(15行目)のコードを検討してください。関数自身のコンストラクターへの参照がプロトタイプに格納されています。なぜこれが便利なのですか? https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js 抜粋(リンクを開かない場合): THREE.ImageLoader.prototype = { constructor: THREE.ImageLoader }


3
これはスパルタですか、それともそうですか?
以下はインタビューの質問です。私は解決策を考え出しましたが、なぜそれが機能するのかわかりません。 質問: Spartaクラスを変更せずに、MakeItReturnFalsereturn を実行するコードを記述しますfalse。 public class Sparta : Place { public bool MakeItReturnFalse() { return this is Sparta; } } 私の解決策:(SPOILER) public class Place { public interface Sparta { } } しかし、なぜの代わりにSpartaにMakeItReturnFalse()言及する{namespace}.Place.Spartaの{namespace}.Spartaですか?


4
Javaの注釈継承のようなものはありますか?
私は注釈を調査していて、いくつかの注釈がそれらの間に階層を持っているように見えるようになりました。 カードのバックグラウンドでコードを生成するために注釈を使用しています。カードの種類はさまざまです(そのため、コードと注釈も異なります)が、名前のようにそれらの間で共通する特定の要素があります。 @Target(value = {ElementType.TYPE}) public @interface Move extends Page{ String method1(); String method2(); } そして、これは一般的な注釈になります: @Target(value = {ElementType.TYPE}) public @interface Page{ String method3(); } 上記の例では、Moveがmethod3を継承することを期待していますが、extensionsはアノテーションでは無効であるという警告が表示されます。Annotationで共通の基本アノテーションを拡張しようとしたのですが、うまくいきません。それは可能ですか、それとも単なる設計上の問題ですか?

3
GetType()は、基本クラスから呼び出されたときに最も派生した型を返しますか?
GetType()は、基本クラスから呼び出されたときに最も派生した型を返しますか? 例: public abstract class A { private Type GetInfo() { return System.Attribute.GetCustomAttributes(this.GetType()); } } public class B : A { //Fields here have some custom attributes added to them } または、派生クラスが次のように実装する必要がある抽象メソッドを作成する必要がありますか? public abstract class A { protected abstract Type GetSubType(); private Type GetInfo() { return System.Attribute.GetCustomAttributes(GetSubType()); } } public …

3
JavaScriptの古典的な継承とプロトタイプの継承
私は非常に多くのリンクをググっていて、古典的な継承とプロトタイプの継承の違いについて良い考えを得ることができませんか? 私はこれらからいくつかのことを学びましたが、私はまだ概念について混乱しています。 原型継承が古典よりも優れている点は? http://aaditmshah.github.io/why-prototypal-inheritance-matters/ 古典的遺産 // Shape - superclass function Shape() { this.x = 0; this.y = 0; } //superclass method Shape.prototype.move = function(x, y) { this.x += x; this.y += y; console.info("Shape moved."); }; // Rectangle - subclass function Rectangle() { Shape.call(this); //call super constructor. } //subclass extends superclass …

6
NodeJSでのJavaScript OOP:どうやって?
私はJavaのように古典的なOOPに慣れています。 NodeJSを使用してJavaScriptでOOPを実行するためのベストプラクティスは何ですか? 各クラスは、module.export? クラスを作成するには? this.Class = function() { //constructor? var privateField = "" this.publicField = "" var privateMethod = function() {} this.publicMethod = function() {} } 対(それが正しいかどうかさえわかりません) this.Class = { privateField: "" , privateMethod: function() {} , return { publicField: "" publicMethod: function() {} } } 対 this.Class = function() …

4
ジェネリック基本クラスから継承し、制約を適用して、C#でインターフェイスを実装する
これは構文の質問です。ジェネリック基本クラスから継承し、型パラメーターの1つに制約を適用しているジェネリッククラスがあります。派生クラスにインターフェイスを実装することも必要です。私の人生では、正しい構文を理解できていないようです。 これは私が持っているものです: DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... } 最初に頭に浮かんだのはこれです。 DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... } しかし、これはT2がIFooを実装するためにDerivedFooではなくIBarとIFooの両方を実装する必要があるため、正しくありません。 私はグーグル、コロン、セミコロンの使用などを少し試しましたが、短くなりました。答えはきっと簡単です。



4
Python super()はTypeErrorを発生させます
Python 2.5では、次のコードでaが発生しTypeErrorます。 >>> class X: def a(self): print "a" >>> class Y(X): def a(self): super(Y,self).a() print "b" >>> c = Y() >>> c.a() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 3, in a TypeError: super() argument 1 must be type, not classobj をに置き換えるclass …

2
Javaクラスが実装されたインターフェースから注釈を継承しないのはなぜですか?
私はGuiceのAOPを使用していくつかのメソッド呼び出しをインターセプトしています。私のクラスはインターフェースを実装しています。Guiceが適切なメソッドを選択できるように、インターフェースメソッドに注釈を付けたいと思います。Inheritedのjavaドキュメントに記載されているように、アノテーションタイプにInheritedアノテーション実装クラスでアノテーションが付けられていても、アノテーションは継承されません。 また、このメタ注釈は注釈がスーパークラスから継承されるだけであることにも注意してください。実装されたインターフェースの注釈は効果がありません。 これの理由は何でしょうか?オブジェクトのクラスが実行時に実装するすべてのインターフェースを知ることはそれほど難しいことではないので、この決定の背後には十分な理由があるはずです。

6
C ++のテンプレートクラスから継承する
テンプレートクラスAreaがあり、メンバー変数T area、a T getArea()、void setArea(T)メンバー関数があるとします。 とArea入力して、特定のタイプのオブジェクトを作成できますArea<int>。 これで、クラスRectangleを継承するAreaクラスができました。それRectangle自体はテンプレートではないので、と入力できませんRectangle<int>。 オブジェクトの継承Areaタイプをどのように特化しRectangleますか? 編集:申し訳ありませんが、明確にするのを忘れていました-私の質問は、エリアを特殊化せずに継承できるかどうかです。そのため、エリアは整数のエリアとして継承されませんが、エリア長方形はタイプを特殊化できます。

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