NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
![](https://markdown-1258186581.cos.ap-shanghai.myqcloud.com/20190606104746.png) ## 1、抽象类特点 1. 抽象类不可以被实例化,实例化由子类去完成 2. 抽象方法必须由子类重写(非抽象子类,抽象子类可不重写) 3. 只要有抽象方法,就是抽象类 4. 可以实现具体的方法,也可以不实现 5. abstract 不能与private、static、final或native并列修饰同一个方法 6. 可以和普通方法一样有成员变量,常量等。 ## 2、接口特点: 1. interface 是 public 的 2. 可以定义常量,会自动被 public static final 修饰 3. java 8 以后可以加 default 关键字实现方法 4. 不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。 5. 可以使用 instanceof 检查一个对象是否实现了某个特定的接口。例如:if(anObject instanceof Comparable){} 6. 在实现多接口的时候一定要避免方法名的重复 ## 3、抽象类和接口的区别 ### 语法层面 抽象类不能被多继承, 接口可以被多实现。也可以被多继承。 ### 抽象层次 抽象类是对类抽象,而接口是对行为的抽象 ### 跨域不同 抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类 抽象类所体现的是一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a" 关系,即父类和派生类在概念本质上应该是相同的。对于接口则不然,并不要求接口的实现者和接口定义在概念本质上是一致的, 有点 “like-a” 的意思, 仅仅是实现了接口定义的契约而已。 ### 设计层次 抽象类是自底向上抽象而来的,接口是自顶向下设计出来的。