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

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

8
ES6クラスで関数を拡張する方法は?
OverаэтотвопросестьответынаStack Overflowнарусском:Наследованиеотфункции ES6では、特別なオブジェクトを拡張できます。そのため、関数から継承することが可能です。そのようなオブジェクトは関数として呼び出すことができますが、そのような呼び出しのロジックをどのように実装できますか? class Smth extends Function { constructor (x) { // What should be done here super(); } } (new Smth(256))() // to get 256 at this call? クラスのどのメソッドも、を介してクラスインスタンスへの参照を取得しますthis。ただし、関数として呼び出される場合は、をthis参照してくださいwindow。関数として呼び出されたときに、クラスインスタンスへの参照を取得するにはどうすればよいですか? PS:ロシア語でも同じ質問です。

7
インターフェースが別のインターフェースを実装できないのはなぜですか?
つまり、 interface B {...} interface A extends B {...} // allowed interface A implements B {...} // not allowed 私はそれをグーグルで調べて、これを見つけました: implementsインターフェイスのメソッドの実装を定義することを示します。ただし、インターフェースには実装がないため、これは不可能です。 ただし、インターフェイスは100%抽象クラスであり、抽象クラスはメソッドを実装せずにインターフェイス(100%抽象クラス)を実装できます。それが「インターフェース」として定義されているときの問題は何ですか? 詳細に、 interface A { void methodA(); } abstract class B implements A {} // we may not implement methodA() but allowed class C extends B { void methodA(){} …


5
Pythonによる拡張-super()Python 3とPython 2の使用
もともと私はこの質問をしたかったのですが、その前にすでに考えられていたことがわかりました... 周りをググる私はconfigparserを拡張するこの例を見つけました。以下はPython 3で動作します。 $ python3 Python 3.2.3rc2 (default, Mar 21 2012, 06:59:51) [GCC 4.6.3] on linux2 >>> from configparser import SafeConfigParser >>> class AmritaConfigParser(SafeConfigParser): ... def __init_(self): ... super().__init__() ... >>> cfg = AmritaConfigParser() しかし、Python 2ではできません。 >>> class AmritaConfigParser(SafeConfigParser): ... def __init__(self): ... super(SafeConfigParser).init() ... >>> cfg = AmritaConfigParser() Traceback …


7
静的フィールドは継承されますか?
静的メンバーが継承される場合、それらは階層全体に対して静的ですか、それともそのクラスだけですか? class SomeClass { public: SomeClass(){total++;} static int total; }; class SomeDerivedClass: public SomeClass { public: SomeDerivedClass(){total++;} }; int main() { SomeClass A; SomeClass B; SomeDerivedClass C; return 0; } 3つのインスタンスすべてで合計は3になりますか、それとも2 SomeClassと1 SomeDerivedClassですか?
102 c++  inheritance  static 


2
クラス定数とプロパティのオーバーライド
以下のシナリオで、クラス定数がインスタンス変数と継承される方法に違いがある理由をよりよく理解したいと思います。 <?php class ParentClass { const TEST = "ONE"; protected $test = "ONE"; public function showTest(){ echo self::TEST; echo $this->test; } } class ChildClass extends ParentClass { const TEST = "TWO"; protected $test = "TWO"; public function myTest(){ echo self::TEST; echo $this->test; } } $child = new ChildClass(); $child->myTest(); $child->showTest(); …

10
ES6でスーパーを使用せずにクラスを拡張する方法は?
super親クラスを呼び出すメソッドを呼び出さずにES6でクラスを拡張することは可能ですか? 編集:質問は誤解を招く可能性があります。私たちが呼び出さなければならないのは標準super()ですか、それとも何か不足していますか? 例えば: class Character { constructor(){ console.log('invoke character'); } } class Hero extends Character{ constructor(){ super(); // exception thrown here when not called console.log('invoke hero'); } } var hero = new Hero(); super()派生クラスを呼び出さないとき、スコープの問題が発生します->this is not defined 私はこれをiojs --harmony with v2.3.0で実行しています

11
PHPの多重継承
PHP5はまだ多重継承をサポートしていないという事実を回避するための良い、きれいな方法を探しています。これがクラス階層です: メッセージ -TextMessage -------- InvitationTextMessage -EmailMessage -------- InvitationEmailMessage 2種類のInvitation *クラスには多くの共通点があります。両方が継承する共通の親クラスInvitationが欲しいです。残念ながら、彼らはまた、現在の祖先と多くの共通点を持っています... TextMessageおよびEmailMessage。ここで多重継承の古典的な欲求。 問題を解決するための最も軽量なアプローチは何ですか? ありがとう!
97 php  oop  inheritance 

2
Qtは仮想純粋スロットをサポートしていますか?
の私のGUIプロジェクトにQtは、すべてから直接継承する多くの「構成ページ」クラスがありますQWidget。 最近、これらすべてのクラスが2つのcommonsスロット(loadSettings()およびsaveSettings())を共有していることに気付きました。 これに関して、私は2つの質問があります: BaseConfigurationPageこれらの2つのスロットを仮想純粋メソッドとして使用して、中間の基本抽象クラス(名前を付けます)を記述することには意味がありますか?(可能なすべての構成ページには常にこれらの2つのメソッドがあるため、「はい」と言います) コードを大幅に変更する前に(必要な場合)、Qtは仮想純粋スロットをサポートしていますか?知っておくべきことはありますか? 以下は、すべてを説明するコード例です。 class BaseConfigurationPage : public QWidget { // Some constructor and other methods, irrelevant here. public slots: virtual void loadSettings() = 0; virtual void saveSettings() = 0; }; class GeneralConfigurationPage : public BaseConfigurationPage { // Some constructor and other methods, irrelevant here. public slots: void …

5
Pythonクラス継承でドキュメント文字列を継承する
Pythonでいくつかのクラス継承を実行しようとしています。各クラスと継承されたクラスに適切なdocstringが必要です。継承したクラスについては、次のようにしたいと思います。 基本クラスのdocstringを継承します おそらく関連する追加のドキュメントをdocstringに追加します クラス継承の状況でこの種のdocstring操作を行う(おそらくエレガントまたはpythonic)方法はありますか?多重継承についてはどうですか?

7
継承と依存性注入
私はすべてのいくつかのサービスが注入されるはずのangular2コンポーネントのセットを持っています。私が最初に思ったのは、スーパークラスを作成し、そこにサービスを注入するのが最善だと思いました。次に、私のコンポーネントのいずれかがそのスーパークラスを拡張しますが、このアプローチは機能しません。 簡略化した例: export class AbstractComponent { constructor(private myservice: MyService) { // Inject the service I need for all components } } export MyComponent extends AbstractComponent { constructor(private anotherService: AnotherService) { super(); // This gives an error as super constructor needs an argument } } これを解決するにはMyService、すべてのコンポーネント内に注入し、その引数をsuper()呼び出しに使用しますが、これは明らかに不合理なことです。 スーパークラスからサービスを継承するようにコンポーネントを正しく整理するにはどうすればよいですか?

4
Rubyカスタムエラークラス:メッセージ属性の継承
カスタム例外クラスに関する情報があまり見つからないようです。 私が知っていること カスタムエラークラスを宣言し、それをから継承させるStandardErrorことができるため、次のようになりますrescue。 class MyCustomError < StandardError end これはあなたがそれを使ってそれを上げることを可能にします: raise MyCustomError, "A message" 後で、救助時にそのメッセージを受け取ります rescue MyCustomError => e puts e.message # => "A message" 私の知らないこと いくつかのカスタムフィールドを例外にしたいがmessage、親クラスから属性を継承したい。例外クラスのインスタンス変数ではないこのトピックを読ん@messageだので、継承が機能しないのではないかと心配しました。 誰か私にこれの詳細を教えてもらえますか?object属性を使用してカスタムエラークラスを実装するにはどうすればよいですか?次は正しいですか: class MyCustomError < StandardError attr_reader :object def initialize(message, object) super(message) @object = object end end その後: raise MyCustomError.new(anObject), "A message" 取得するため: rescue MyCustomError …

5
仮想継承はどのようにして「ダイヤモンド」(多重継承)のあいまいさを解決しますか?
class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<<"D";} }; int main(){ A *a = new D(); a->eat(); } ダイヤモンドの問題を理解しています。上記のコードにはその問題はありません。 …

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