Вопрос по кастингу интерфейсов.
*******************************************************************************/
interface Dancer {
//void dance(){
// System.out.println("DANCER");
//}
void dance();
}
interface SubDancer extends Dancer {
void dance();
}
public class Main
{
public static void main(String[] args) {
SubDancer sub = //()->System.out.println("Hello World");
new SubDancer() {
public void dance(){
System.out.println("Hello World");
}
};
sub.dance();
((Dancer)sub).dance();
}
}
Не могу понять, почему при кастинге интерфейса возвращается одно и то же значение. Так же как и не могу понять, почему будет возвращаться значение из потомка, если в родителе объявлен тот же метод по дефолту, т.е. вот так:
interface Dancer {
default void dance(){
System.out.println("DANCER");
}
}
Почему все равно возвращается «Hello World»?