В Java, как я могу вызвать метод базового класса из метода переопределения в производном классе?
у меня есть два класса Java: B, который расширяет другой класс A, следующим образом:
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() { /* Another code */ }
}
Я хотел бы назвать A.myMethod()
С B.myMethod()
. Я иду от мир C++ и я не знаю, как сделать это базовая вещь в Java.
12 ответов:
ключевое слово, которое вы ищете, это
super
. Смотрите данное руководство, например.
просто вызвать его с помощью супер.
public void myMethod() { // B stuff super.myMethod(); // B stuff }
ответ таков:
super.Mymethod(); super(); // calls base class Superclass constructor. super(parameter list); // calls base class parameterized constructor. super.method(); // calls base class method.
super.MyMethod()
должен быть вызван внутриMyMethod()
наclass B
. Так оно и должно бытьclass A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { super.MyMethod(); /* Another code */ } }
Я уверен, что вы можете сделать это с помощью механизма отражения Java. Это не так просто, как с помощью супер но это дает вам больше энергии.
class A { public void myMethod() { /* ... */ } } class B extends A { public void myMethod() { super.myMethod(); // calling parent method } }
использовать супер ключевое слово.
super.baseMethod(params);
вызовите базовые методы с помощью супер ключевое слово и передать соответствующие параметры.
смотрите, здесь вы переопределяете один из методов базового класса, следовательно, если вы хотите вызвать метод базового класса из унаследованного класса, то вы должны использовать супер ключевое слово в том же методе наследуемого класса.
class test { void message() { System.out.println("super class"); } } class demo extends test { int z; demo(int y) { super.message(); z=y; System.out.println("re:"+z); } } class free{ public static void main(String ar[]){ demo d=new demo(6); } }
Если u r использует эти методы для инициализации, то используйте конструкторы класса A и передайте супер ключевое слово внутри конструктора класса B.
или если вы хотите вызвать метод суперкласса из метода подкласса, то вы должны использовать ключевое слово super внутри метода подкласса, например : супер.myMethod ();
// Using super keyword access parent class variable class test { int is,xs; test(int i,int x) { is=i; xs=x; System.out.println("super class:"); } } class demo extends test { int z; demo(int i,int x,int y) { super(i,x); z=y; System.out.println("re:"+is); System.out.println("re:"+xs); System.out.println("re:"+z); } } class free{ public static void main(String ar[]){ demo d=new demo(4,5,6); } }