今天碰到这个问题时候,还真不好理解,只知道interface中的变量默认是被public static final 修饰的,接口中的方法是被public和abstrct修饰的。查阅了很多资料,做了些例子,得出以下结论,不足的地方希望大家指出。
- /*
- * 关于抽象类和接口
- *
- * 1.定义变量时
- * 抽象类定义的变量可以不被赋值。
- *
- * 接口中定义的变量(确切的说应该是常量)必须被赋值(final)。
- *
- * 2.定义方法时
- *
- * 抽象类中定义的方法,可以指定程序体也可以不指定。
- * 程序员可以在非抽象方法中指定程序体 ,与其他普通类中的方法类似。
- * 但在抽象方法中,必须不指定程序体(写程序体会报出:Abstract methods do not specify a body的错误),与接口中定义方法的形式很类似。
- *
- * 接口中的方法,所有方法都默认的是抽象的,所以必须不指定程序体。
- *
- * 3.设计初衷
- *
- * 抽象类是被java设计用来实现继承的。
- * 接口是用来做多重继承的一个特例。
- *
- * 4.is a 和 like a(还需要再看看)
- */
- public abstract class AbstratClassTest {
- String name ;
- //被final的变量,但不能指定一个有效的set方法(final作用的原因),没有体现封装的闭合原则。