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