不是,那是没有实现的方法。我不知道你的“默认方法”这个说法是从哪里看来的。
对于抽象类的方法无非就是实现了的和没有实现的抽象方法。对于抽象方法,需要子类给予实现。
如果硬要用你的说法,叫默认行为的话,那我再举个例子。
abstract class Test{
abstract void abstractMethod();
public void theMethod(){
System.out.println("method!");//这个是默认方法
}
}
class Test2 extends Test{
void abstractMethod(){System.out.println("abstractmethod");}
}
像上面这个写法,如果
Test2 t = new Test2();
t.theMethod(); 这么用的话,输出就是method!
但是如果改一下
abstract class Test{
abstract void abstractMethod();
public void theMethod(){
System.out.println("method!");//这个是默认方法
}
}
class Test2 extends Test{
void abstractMethod(){System.out.println("abstractmethod");}
public void theMethod(){
System.out.println("method in Test2");
}
}
改成上面这样,我们成为方法的重写
Test2 t = new Test2();
t.theMethod(); 再这么用的话,输出就是method in Test2。因为theMethod方法在Test2里被重写了(按照你的“默认行为”这种说法就是默认行为被覆盖了)
不知道这么说你清楚了没有