Java的 abstract class

在abstract class的定义中,怎么赋予方法的默认行为?

第1个回答  推荐于2016-11-13
就和普通方法的申明一样,该怎么写还是怎么写。
但是如果一个方法没有定义实现,就必须将方法申明为abstract的。
举个例子吧:
abstract class Test{
abstract void abstractMethod();
public void theMethod(){
System.out.println("method!");
}
}追问

abstract class Test{
abstract void abstractMethod();//这行是 默认方法吗?
public void theMethod(){
System.out.println("method!");
}
}

追答

不是,那是没有实现的方法。我不知道你的“默认方法”这个说法是从哪里看来的。
对于抽象类的方法无非就是实现了的和没有实现的抽象方法。对于抽象方法,需要子类给予实现。

如果硬要用你的说法,叫默认行为的话,那我再举个例子。

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里被重写了(按照你的“默认行为”这种说法就是默认行为被覆盖了)

不知道这么说你清楚了没有

本回答被提问者采纳
第2个回答  2011-05-02
正常写。
为什么叫做abstract,那是因为,有的方法(行为)对于这种对象肯定会有,但对于它这一层没办法定义准确的行为,只能留待它的子类去真正的实现,所以把这个方法定义为abstract的方法,这个时候,类也必须是abstract类
第3个回答  2011-05-02
没什么区别吧
相似回答