Java调用一个不存在的方法

请各位大神帮我解释一个问题,先看代码,谢谢!

 abstract class Base{
 abstract public void myfunc();
 public void another(){
 System.out.println("Another method");
 } 
 }
 public class Abs extends Base{
 public static void main(String[] args){
 Abs a=new Abs();
 a.amethod();
 }
 public void myfunc(){
System.out.println("My Func");
}

试卷上的一道题目,结果是可以编译和运行,输出的结果是“My Func”
我的疑问是上面的程序当中并没有出现amethod为什么可以调用它

只能说抽象类的父类中有这个方法,是继承过来的,否则是无法编译和运行的。

你这个Abs继承了Base后,并实现了Base里的抽象方法。
但是Base里并没有amethod方法。
而你在Abs里有个程序的执行入口Main方法,而你在这个Main方法里实现的对象是这个类的本身,并且调用了这个类本身的一个
方法amethod。如果程序可以执行,那么也就是说当执行到这个方法时,在这个本类里可以自动创建一个这个默认的方法吧。
但是这个方法是没有意义的,因为它没有做任何的事情的。你研究明白了用处可能也不大的。

在Base将public改成private,你就不能用了