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

オブジェクト指向プログラミングにおけるメソッドのオーバーライドは、サブクラスまたは子クラスが、スーパークラスまたは親クラスの1つによってすでに提供されているメソッドの特定の実装を提供できるようにする言語機能です。


7
オーバーライドするときにsuper()メソッドを呼び出さないのはいつですか?
独自のAndroidカスタムクラスを作成すると、extendそのネイティブクラスになります。次に、ベースメソッドをオーバーライドするときsuper()はonCreate、常にonStop、などで行うように、常にメソッドを呼び出します。 そして、これはそれだと思ったのは、最初からAndroidチームが常にsuperすべてのメソッドのオーバーライドを呼び出すようにアドバイスしていたからです。 しかし、多くの本では、自分よりも経験豊富な開発者が電話superを省略していることがよくあり、知識の欠如として電話をかけていることを本当に疑っています。たとえば、とで省略されている次の基本的なSAXパーサークラスを見てください。superstartElementcharactersendElement public class SAXParser extends DefaultHandler{ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(qName.equalsIgnoreCase("XXY")) { //do something } } public void characters(char[] ch, int start, int length) throws SAXException { //do something } public void endElement(String uri, String localName, String qName) throws …
113 java  android  overriding 

9
Javaでequalsメソッドをオーバーライドする方法
Javaでequalsメソッドをオーバーライドしようとしています。私はPeople基本的に2つのデータフィールドnameとを持つクラスを持っていますage。次に、equalsメソッドをオーバーライドして、2つのPeopleオブジェクト間を確認できるようにします。 私のコードは次のとおりです public boolean equals(People other){ boolean result; if((other == null) || (getClass() != other.getClass())){ result = false; } // end if else{ People otherPeople = (People)other; result = name.equals(other.name) && age.equals(other.age); } // end else return result; } // end equals しかし、私が書くときage.equals(other.age)、equalsメソッドはStringのみを比較でき、年齢はIntegerであるため、エラーが発生します。 解決 ==提案されたように演算子を使用して、私の問題は解決しました。
108 java  overriding  equals 

3
Pythonで基本クラスのclassmethodを呼び出す
次のコードを検討してください。 class Base(object): @classmethod def do(cls, a): print cls, a class Derived(Base): @classmethod def do(cls, a): print 'In derived!' # Base.do(cls, a) -- can't pass `cls` Base.do(a) if __name__ == '__main__': d = Derived() d.do('hello') > $ python play.py > In derived! > <class '__main__.Base'> msg からDerived.do、どのように電話しBase.doますか? superこれが通常のオブジェクトメソッドであれば、通常は直接、または基本クラス名を直接使用しますが、どうやら基本クラスでclassmethodを呼び出す方法が見つかりません。 上記の例では、Base.do(a)印刷Baseの代わりにクラスをDerivedクラス。

17
なぜ/いつToStringをオーバーライドするのが適切でしょうか?
私はC#を勉強していますToStringが、以下の例に示すように、オーバーライドのポイントと利点は何でしょうか。 これは、オーバーライドなしの一般的なメソッドを使用して、もっと簡単な方法で実行できますか? public string GetToStringItemsHeadings { get { return string.Format("{0,-20} {1, -20}", "Office Email", "Private Email"); } } public override string ToString() { string strOut = string.Format("{0,-20} {1, -20}", m_work, m_personal); return strOut; }
103 c#  overriding 

9
C ++仮想関数を安全にオーバーライドする
仮想関数を含む基本クラスがあり、派生クラスでその関数をオーバーライドしたい。派生クラスで宣言した関数が実際に基本クラスの関数をオーバーライドするかどうかをコンパイラに確認させる方法はありますか?古い関数を上書きするのではなく、誤って新しい関数を宣言していないことを保証するマクロまたは何かを追加したいと思います。 この例を見てみましょう: class parent { public: virtual void handle_event(int something) const { // boring default code } }; class child : public parent { public: virtual void handle_event(int something) { // new exciting code } }; int main() { parent *p = new child(); p->handle_event(1); } のparent::handle_event()代わりにここで呼び出されますchild::handle_event()。これは、子のメソッドがconst宣言を欠落しているため、新しいメソッドが宣言されているためです。これは、関数名のタイプミスまたはパラメータータイプのわずかな違いの可能性もあります。また、基本クラスのインターフェイスが変更された場合や、派生クラスが変更を反映するように更新されなかった場合にも、簡単に発生する可能性があります。 この問題を回避する方法はありますか?コンパイラまたは他のツールにこれをチェックするように指示することはできますか?役立つコンパイラフラグ(できればg ++)これらの問題をどのように回避しますか?

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(); …

11
ドロップシャドウ付きのカスタムImageView
さて、私は周りを読んで探していましたが、これを理解しようとして壁に頭をぶつけています。ここに私がこれまで持っているものがあります: package com.pockdroid.sandbox; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.widget.ImageView; public class ShadowImageView extends ImageView { private Rect mRect; private Paint mPaint; public ShadowImageView(Context context) { super(context); mRect = new Rect(); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setShadowLayer(2f, 1f, 1f, Color.BLACK); } @Override protected void onDraw(Canvas …

4
C#でクラスメソッドを拡張メソッドでオーバーライドする方法はありますか?
拡張メソッドでクラスのメソッドをオーバーライドしたい場合がありました。C#でそれを行う方法はありますか? 例えば: public static class StringExtension { public static int GetHashCode(this string inStr) { return MyHash(inStr); } } これを実行したかったのは、文字列のハッシュをデータベースに保存し、文字列クラスのハッシュを使用するすべてのクラス(つまり、Dictionaryなど)で同じ値を使用できるようにするためです。組み込みの.Netハッシュアルゴリズムは、フレームワークの1つのバージョンから次のバージョンへの互換性が保証されていません。独自のものに置き換えたいと思います。 文字列クラスやGetHashCodeメソッドだけに限定されるのではなく、拡張メソッドでクラスメソッドをオーバーライドしたい場合もあります。 既存のクラスをサブクラス化してこれを実行できることはわかっていますが、多くの場合、拡張機能を使用してこれを実行できると便利です。


6
別のCSSクラスを使用してCSSクラスのプロパティをオーバーライドする方法
CSS3は初めてなので、次のことができるようになりたいです。 要素にクラスを追加すると、この特定の要素で使用されている別のクラスのプロパティが上書きされます。 私が持っているとしましょう <a class="left carousel-control" href="#carousel" data-slide="prev"> というクラスを追加できるようにしたいと思いbakground-noneますleft。これは、クラスのデフォルトの背景を上書きします。 ありがとう!
95 css  class  overriding 

4
Railsでto_jsonをオーバーライドする方法は?
更新: この問題は適切に調査されていません。本当の問題は内にありますrender :json。 元の質問の最初のコードを貼り付けると、期待どおりの結果が得られます。ただし、まだ注意が必要です。この例を見てください: render :json => current_user と同じではありません render :json => current_user.to_json つまり、Userオブジェクトに関連付けられrender :jsonたto_jsonメソッドを自動的に呼び出しません。実際、to_jsonがUserモデルでオーバーライドされている場合はrender :json => @user、ArgumentError以下の説明が生成されます。 概要 # works if User#to_json is not overridden render :json => current_user # If User#to_json is overridden, User requires explicit call render :json => current_user.to_json これはすべて私にはばかげているようです。これは、タイプが指定されているときrenderに実際には呼び出されていないことを私に言っているようです。誰かがここで実際に何が起こっているのか説明できますか?Model#to_json:json これで私を助けることができるどんなgeniiもおそらく他の私の質問に答えることができます:Railsで@ foo.to_json(options)と@ bars.to_json(options)を組み合わせてJSON応答を構築する方法 元の質問: SOで他の例をいくつか見たことがありますが、私が探していることは何もしていません。 私はしようとしています: …

13
Java:オーバーライドされたメソッドを呼び出すスーパーメソッドを呼び出す
public class SuperClass { public void method1() { System.out.println("superclass method1"); this.method2(); } public void method2() { System.out.println("superclass method2"); } } public class SubClass extends SuperClass { @Override public void method1() { System.out.println("subclass method1"); super.method1(); } @Override public void method2() { System.out.println("subclass method2"); } } public class Demo { public static …


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 …

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