Questions tagged «overriding»

在面向对象程序设计中,方法重写是一种语言功能,它允许子类或子类提供其超类或父类之一已经提供的方法的特定实现。


7
什么时候覆盖时不调用super()方法?
当我创建自己的Android自定义类时,extend它就是本机类。然后,当我要重写基方法,我总是叫super()方法,就像我一直做的onCreate,onStop等 我认为就是这样,因为从一开始,Android团队就建议我们始终调用super每个方法重写。 但是,在许多书中,我可以看到比我自己更有经验的开发人员经常忽略调用super,我真的怀疑他们是因为缺乏知识而这样做。例如,看看这个基本的SAX,其中解析器类super中被省略startElement,characters并且endElement: 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并且age是Integer。 解 我==按照建议使用运算符,问题解决了。
108 java  overriding  equals 

3
在Python中调用基类的类方法
考虑以下代码: 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如果这是一个普通的对象方法,通常我会直接使用甚至直接使用基类名称,但是显然我找不到在基类中调用类方法的方法。 在上面的示例中,Base.do(a)打印Baseclass而不是Derivedclass。

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哈希算法不能保证从Framework的一个版本到下一个版本都兼容,我想用自己的版本替换它。 在其他情况下,我也想用扩展方法覆盖类方法,因此它不仅特定于字符串类或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 也就是说,render :json不会自动调用to_json与User对象关联的方法。实际上,如果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 任何可以帮助我解决这个问题的精灵都可以回答我的另一个问题:如何通过在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 …

8
是否可以覆盖非虚拟方法?
有什么方法可以覆盖非虚拟方法?或产生类似结果的东西(除了创建一个新方法来调用所需的方法之外)? 我想Microsoft.Xna.Framework.Graphics.GraphicsDevice在考虑单元测试的情况下覆盖其中的一种方法。

16
覆盖vs隐藏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 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.