抽象类:(Abstract)
1,概念:如果一个类定义了方法,但没有具体执行代码,那么这个方法叫抽象方法,抽象方法用abstract来修饰,由于无法执行抽象方法,则这个类也被叫做抽象类。用abstract修饰的类就是抽象类。
eg1:
// 抽象类
abstract class Person {
// 抽象方法
public abstract void say();
}
特点:1.抽象类不会被实例化
eg2:Person p = new Person(); // 编译错误
2.抽象方法无方法体
eg3:public abstract void run();
接口:
1,概念:接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到行为定义和业务实现分离的架构设计目的,并且接口的多重实现以及多重继承等特性,在架构设计上更灵活,易扩展。接口是比抽象类更加抽象的一种纯抽象的代码结构,不能包含成员变量,只包含常量,抽象方法,默认方法等。
区别:
1.在接口中定义抽象方法可以不加abstract关键字,而抽象方法必须加。
2.在接口中不存在普通方法,不允许构造方法,声明的常量不允许被修改,而抽象类可以存在普通方法,允许构造方法,可以定义成员变量。
3.在接口中可以多重继承,使用implements多个接口,而抽象类只能继承一个类。
4.在接口中只能使用public访问修饰符,而抽象类可以使用任意访问修饰符。