抽象类的作用仅仅是表达接口,不表达具体的实施细节。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。如果不这样做(完全可以选择不做),则衍生类也会是抽象的。
子类继承了父类的所有方法,但是不是所有方法都从父类继承,它可以有自己独有的方法。
子类继承了父类的所有方法,但是不是所有方法都从父类继承,它可以有自己独有的方法。
public abstract class abc {
public void doIt() {
System.err.println("c it!");
}
}字类:
public class abcd extends abc {
}呵呵。子类不用实现任何方法,一样合法。这里的作用就是在逻辑上,让父类可见。这样,就可以解决一个逻辑问题:某个概念类有多个子类,其中一个或一些和他的行为相同,或在我们讨论的范围内相同。
this.x = x + xoff;
this.y = y + yoff;
}就是2维运动了。你当然可以给你的子类加各种方法来扩充,比如给leopad加jumpTo,给salmon加diveTo(都是3维运动)。但是,并不是所有的creature都有jump和dive能力的。在运动方面就是这样。所以,在运动领域,有大量的creature不需要扩充方法,或是override moveTo。明白没?咱们既然说概念,就不要具体化。这个东西在现实中当然不会碰到,因为现实中没有这么简单的模型。既然楼主问概念,咱就讲概念。抽象类的意思是抽象,而不是方法,搞清楚。他之所以和interface不一样,就在于此。interface才是方法抽象。