Questions tagged «overriding»

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

9
覆盖C中的函数调用
为了记录调用,我想覆盖对各种API的某些函数调用,但是我也想在将数据发送到实际函数之前对其进行操作。 例如,假设我getObjectName在源代码中使用了一个被称为数千次的函数。有时我想暂时重写此功能,因为我想更改此功能的行为以查看不同的结果。 我创建一个新的源文件,如下所示: #include <apiheader.h> const char *getObjectName (object *anObject) { if (anObject == NULL) return "(null)"; else return "name should be here"; } 我会像往常一样编译所有其他源代码,但是在与API库链接之前,我先将其与该函数链接。这工作正常,除非我显然无法在覆盖函数中调用真实函数。 有没有一种更简单的方法来“重写”一个函数而又不会得到链接/编译错误/警告?理想情况下,我希望能够仅通过编译和链接一个或两个额外的文件来覆盖该功能,而不是随意使用链接选项或更改程序的实际源代码。

4
Java方法注释如何与方法覆盖一起使用?
我有一个父类Parent和一个子类Child,因此定义为: class Parent { @MyAnnotation("hello") void foo() { // implementation irrelevant } } class Child extends Parent { @Override foo() { // implementation irrelevant } } 如果我得到Method参考Child::foo,childFoo.getAnnotation(MyAnnotation.class)会给我@MyAnnotation吗?还是会null? 我对注释如何与Java继承一起工作或是否与Java继承一起工作更感兴趣。

10
在子类中覆盖equals()和hashCode()……考虑到超级字段
关于如何考虑超字段的子类中的Override equals()&hashCode()in,是否有特定规则?知道有很多参数:超字段是private / public,有/没有getter ... 例如,Netbeans生成的equals()和hashCode()不会考虑超级字段...和 new HomoSapiens("M", "80", "1.80", "Cammeron", "VeryHot").equals( new HomoSapiens("F", "50", "1.50", "Cammeron", "VeryHot")) 将返回true :( public class Hominidae { public String gender; public String weight; public String height; public Hominidae(String gender, String weight, String height) { this.gender = gender; this.weight = weight; this.height = height; …

3
获取子类的重写函数
有没有办法在Python中获取子类的所有替代函数? 例: class A: def a1(self): pass def a2(self): pass class B(A): def a2(self): pass def b1(self): pass 在这里,我想获得一个列表["a2"]的类的对象B(或类对象本身),因为类B重写只有一个方法,即a2。


2
当未明确给出返回类型时,为什么可以用返回字符串的方法覆盖返回单元的方法?
我正在阅读有关Scala Edition1中编程特性的章节中的代码示例, 网址为https://www.artima.com/pins1ed/traits.html 并由于我的错字而遇到奇怪的行为。尽管代码段下面的特征覆盖方法不会产生任何编译错误,但是覆盖方法的返回类型Unit与相对String。但是,在对象上调用该方法时,它返回Unit,但不打印任何内容。 trait Philosophical { def philosophize = println("I consume memory, therefore I am!") } class Frog extends Philosophical { override def toString = "green" override def philosophize = "It aint easy to be " + toString + "!" } val frog = new Frog //frog: Frog = …
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.