一、抽象类
1.概念
Java中可以定义没有方法体的方法,该方法由其子类来具体的实现。该没有方法体的方法我们称之 为抽象方法,含有抽象方法的类我们称之为抽象类。
2.抽象方法
只包含一个方法名,没有方法体,使用abstract修饰。
3.抽象类的特点
a.抽象类不能有对象,(不能用new此关键字来创建抽象类的对象);
b.有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法;可以有0到n个抽象方法,以及0到n具体方法。
c.抽象类中的抽象方法必须在子类中被重写。抽象方法生来就是要被重写的,而且是必须重写。
d.抽象类和普通类一样,各种形式的成员变量都可以声明,也需要构造方法。
4.示例
abstract class Demo {
abstract void method1();
abstract void method2();
…
}
二、接口
1.概念
接口就是一个规范和抽象类比较相似。它只管做什么,不管怎么做。通俗的讲,接口就是某个事物对外提供的一些功能的声明,其定义和类比较相似,只不过是通过interface关键字来完成。
比抽象类更加抽象的是接口,在接口中所有的方法都是抽象的。
2.特性
- 接口没有构造函数,也不可以被实例化
- 接口中的方法默认是public abstract的,变量默认是public static final的
- 接口可以被扩展,一个接口可以继承多个接口
3.示例
interface Demo {
void method1();
void method2();
…
}
三、区别
总的来说,抽象类和接口主要有以下三种区别:
1、抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3、一个类只能继承一个抽象类,而一个类却可以实现多个接口。