В Java, как я могу вызвать метод базового класса из переопределяющего метода в производном классе?
-
06-07-2019 - |
Вопрос
У меня есть два класса Java: B, который расширяет другой класс A следующим образом:
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() { /* Another code */ }
}
Я хотел бы вызвать A.myMethod ()
из B.myMethod ()
. Я из мира C ++ и я не знаю, как сделать это в Java.
Решение
Ключевое слово, которое вы ищете - super
. См., Например, это руководство .
Другие советы
Просто позвони, используя 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 ()
класса B
. Так и должно быть
class A {
public void myMethod() { /* ... */ }
}
class B extends A {
public void myMethod() {
super.MyMethod();
/* Another code */
}
}
Я уверен, что вы можете сделать это с помощью механизма Java Reflection. Это не так просто, как использование super, но дает вам больше возможностей.
class A
{
public void myMethod()
{ /* ... */ }
}
class B extends A
{
public void myMethod()
{
super.myMethod(); // calling parent method
}
}
вызвать super.myMethod ();
Используйте ключевое слово super . р>
super.baseMethod(params);
вызывайте базовые методы с ключевым словом super и передавайте соответствующие параметры.
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);
}
}
Смотрите, здесь вы переопределяете один из методов базового класса, поэтому, если вы хотите вызывать метод базового класса из унаследованного класса, вам нужно использовать ключевое слово super . в том же методе унаследованного класса.
Если вы используете эти методы для инициализации, используйте конструкторы класса A и передайте ключевое слово super внутри конструктора класса B.
Или, если вы хотите вызвать метод суперкласса из метода подкласса, вы должны использовать ключевое слово super внутри метода подкласса, например: 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);
}
}