相同点:
abstract类和接口都可以有abstract方法
不同点
1)接口中,只可以有常量,不可以有变量。
而abstract类中既可以由常量有可以有变量。
2)abstract类可以有非abstract方法,接口不行
在程序设计时应当根据具体情况分析来确定是使用接口还是使用抽象类。
abstract类除了提供重要的需要子类重写的abstract方法外,也提供了子类可以继承的变量和非abstract方法。
如何判断使用情况
使用抽象类
如某个问题,子类需要父类的一些变量和非abstract,又要实现自己的特殊形态去重写父类的abstract方法。
使用接口
如果某个问题不需要继承,只需要若干个类给出重要的abstract方法的实现方法,就可以考虑用接口。 |