У меня есть супер класс:Java метод коррекции вызова
public class SuperClass {
public void dosomething() {
firstMethod();
secondMethod();
}
public void firstMethod() {
System.out.println("Super first method");
}
public void secondMethod() {
System.out.println("Super second method");
}
}
Суб класс:
public class SubClass extends SuperClass {
public void dosomething() {
super.dosomething();
}
public void firstMethod() {
System.out.println("Sub first method");
}
public void secondMethod() {
System.out.println("Sub second method");
}
}
тест Класс:
public static void main(String[] args) {
SubClass sub = new SubClass();
sub.dosomething();
SuperClass sup = new SuperClass();
sup.dosomething()
}
при запуске метода испытания, я получил это:
Sub first method
Sub second method
Можете ли вы рассказать мне, как это произошло? В подклассе dosomething
я вызвал super.dosomething()
, и я думаю, что будет вызван метод super, но был вызван метод переопределения в подклассе.
если я это сделать:
SuperClass superClass = new SuperClass();
superClass.dosomething();
результат:
Супер Первый метод
Супер Второй метод
Разница заключается в вызов метода место. Я думаю, что должно быть что-то я не знаю!):
упс супер ссылка указывает на подкласс в первом примере ...
так:
SuperClass sub = new SubClass();
sub.firstMethod();
sub.secondMethod();
Я думаю, что эта функция очень полезна, но я просто не знаю, как она работает в деталях :( – Felix
@Felix: что не нужно вы понимаете, что это зависит от типа выполнения вашего объекта, а не от типа, в котором была определена переменная. –