抽象类 是对一系列看上去不同,但是本质上相同的具体概念的抽象。
在语法层面,
Java语言对于abstract class和interface给出了不同的定义方式:
abstract class方式定义:
abstract class Demo
{
int num1;
abstract int num2;
abstract void method1();
abstract void method2();
}
interface 方式定义:
interface Demo
{
static final int num;
void method1();
interface method2();
}
interface 中只能有 静态的、不能修改的 数据成员(static final),但是在interface中一般不定义数据成员。
interface 中所有成员方法都是abstract的。interface是一种特殊形式的abstract class.
首先,abstract class在java语言中表示 “一种继承关系”(即,需要用到extends关键字),一个类只能单继承(java不支持多继承),但可实现多个interface(即,需要用到implements关键字)。PS:为了弥补无法多继承的缺陷。
其次,abstract class可以赋予方法 默认行为,但interface中,方法不能拥有默认行为。
如果不能再抽象类中定义默认行为,就会导致 “同样的方