如果我有一个子类具有从父类重写的方法,并且在非常特定的情况下我想使用原始方法,那么如何调用这些方法?如何从子类调用重写的父类方法?
7
A
回答
6
调用超级
class A {
int foo() { return 2; }
}
class B extends A {
boolean someCondition;
public B(boolean b) { someCondition = b; }
int foo() {
if(someCondition) return super.foo();
return 3;
}
}
+0
不应该在类A中使用foo()方法是静态的,这样你可以像这样调用它:super.foo()? – 2011-03-07 04:41:43
+3
@Eng不!静态意味着很不同的东西。 – corsiKa 2011-03-07 04:43:22
6
这就是super
是。如果重写方法method
,那么你可能会实现这样的:
protected void method() {
if (special_conditions()) {
super.method();
} else {
// do your thing
}
}
2
通常你可以使用关键字super
访问父类的功能。 例如:[?在Java中,如何我所说的基类的从在派生类的覆盖方法方法]
public class Subclass extends Superclass {
public void printMethod() { //overrides printMethod in Superclass
super.printMethod();
System.out.println("Printed in Subclass");
}
public static void main(String[] args) {
Subclass s = new Subclass();
s.printMethod();
}
}
从http://download.oracle.com/javase/tutorial/java/IandI/super.html两者
相关问题
- 1. Ruby:调用子类中的父类的重写方法
- 2. 从抽象超类调用重写的子类的类方法
- 3. 父类的方法如何访问子类的重写变量?
- 4. 重写父类的方法
- 5. 如何从父类调用重写的方法而不是超类?
- 6. 子类调用父类的方法
- 7. 从父项调用子类方法
- 8. 从子类中的重载方法调用基类方法
- 9. 如何从JavaScript中的子类调用父方法?
- 10. 如何从父类调用孩子的方法?
- 11. 调用基类重写的方法从父类的构造函数
- 12. EmberJS:从子类的init方法调用父类的功能
- 13. 从Java子类中调用的方法不是在父类
- 14. 从父类调用子类的静态方法
- 15. 从父方法调用重写的父方法
- 16. 从子类调用重写的s3方法(R.oo/R.methodsS3)
- 17. 从子实例调用基类的方法已被重写
- 18. C++如何从包含的类中调用父类方法?
- 19. 如何从Python中重写的@classmethod调用父类的@classmethod?
- 20. 父类方法是从子类对象调用
- 21. 调用父类的方法
- 22. 调用父类的方法
- 23. 如何用Perl中的子类重写父类函数?
- 24. 使用重写的子类方法的超类方法
- 25. Java:从父类访问子类方法
- 26. 如何在子类中调用父类?
- 27. Ember.js如何从子类调用超类或基类方法?
- 28. 从超类调用子类方法
- 29. Actionscript:从子类调用超类方法
- 30. 类调用父类的方法
的可能重复(http://stackoverflow.com/questions/268929/in-java-how-to-i-call-a-base-class-method-from-the-overriding-method-in-a-deri) – 2011-03-07 22:00:10