抽象类和接口都是java对事物对象抽象的机制,是多态性的表现。在某些时候它们还可以互换,其实它们还是有区别的。
1,抽象类(abstract class):对某些对象的抽象描述的类(对事物对象行为方法的声明,但是却不实现具体的方法内容,具体的实现需要它的子类自己去实现)
(1)抽象类可以有自己的成员变量,和方法,还有抽象方法。(也可以没有抽象方法)
抽象类的定义:
abstract class T{
public int i; //抽象类自己的变量
public void A(){........} //自己的方法
abstract void S(); //抽象方法
abstract int D();
}
(2)抽象类的抽象方法是靠子类实现的,抽象类可以继承也可以实现接口,而且它的抽象方法不可以实现。如果继承的子类没有实现它的方法,那么子类也是抽象类;如果抽象类实现了接口,那么抽象类不需要实现接口方法,只需要留给子实类实现就行了。
(3)抽象类不能实例化,但是可以有自己构造函数(子类通过它给抽象类成员变量赋值)如果实例化,也只能是继承它的子类实例化。
2,接口:对事物行为(方法)的抽象。
(1),他没有自己的属性,最多只能有公共的静态的常量 :static final 成员变量,只能有抽象方法(不需要abstract 修饰)比如:
定义:
interface T{
static final int i=12;
void A(); //声明方法
int S();
}
(2)接口只能实现,不能继承,而且接口的方法在实现它的子类中必须实现。如果不实现那么就是子接口。
实现:class W implements T{
void A(){......}
int S(){..........}
}
(如有疑问,请多多指教)