共同点
- 都不能被实例化
- 都可以包含抽象方法
- 都可以有默认实现的方法
区别
- 接口主要是对类的行为进行约束,实现了某个接口就具有了对应的行为;抽象类主要用于代码复用,强调的是所属关系
- 一个类只能继承一个类,但可以实现多个接口
- 接口中的成员变量只能是public static final类型的,不能被修改且必须有初始值;而抽象类的成员变量默认是default,可在子类中重新被定义和重新赋值。
抽象类的作用
通常作为其他类的父类,目的是提供一些通用的行为和属性。
定义抽象类
通过abstract关键字来修饰,抽象类可以包含抽象方法(只有声明,没有方法体)和具体方法(有方法体)
public abstract class Shape {// 抽象方法public abstract double calculateArea();// 具体方法public void printDetails() {System.out.println("This is a shape.");}
}
使用抽象类
如果子类没有实现抽象类中的所有抽象方法,那么子类也必须声明为抽象类。
内部类
内部类分为4种:
- 成员内部类
- 静态内部类
- 局部(方法)内部类
- 匿名内部类
总结
接口主要用于对类的行为进行约束,实现了某个接口就具有了对应的行为;
抽象类主要用于代码复用,强调的是所属关系。