1. 一个子类implements一个接口,如果该子类是非abstract类,就必须实现接口中的所有方法(不管是否需要);而如果该子类是abstract类
,则可以实现接口的中方法也可以不实现。
一个子类如果是继承一个抽象类,如果该子类是非abstract类,就必须实现基类中的所有抽象方法;而如果该子类是abstract类,则可以实
现基类的中抽象方法也可以不实现。
//这两种情况看起来是一样的,只不过,抽象类中可以有非抽象方法,而接口中必须全是抽象方法。
2. 如果一个接口中定义的方法名改变了,那么所有实现此接口的子类显然将无法通过编译,因为接口的那个改名的方法在非抽象子类中没有实
现。
抽象类如果修改了一个抽象方法的名称,子类同样编译不过,但若修改的是非抽象方法,编译没有问题。
//两者看起来看是差不多的,只不过修改的方法有抽象和非抽象之别。
3. 关于
抽象类如果修改了一个抽象方法的名称,子类同样编译不过,如果修改的是非抽象方法,编译没有问题,这个不确定性恰恰是抽象类的致命
弱点。
,则可以实现接口的中方法也可以不实现。
一个子类如果是继承一个抽象类,如果该子类是非abstract类,就必须实现基类中的所有抽象方法;而如果该子类是abstract类,则可以实
现基类的中抽象方法也可以不实现。
//这两种情况看起来是一样的,只不过,抽象类中可以有非抽象方法,而接口中必须全是抽象方法。
2. 如果一个接口中定义的方法名改变了,那么所有实现此接口的子类显然将无法通过编译,因为接口的那个改名的方法在非抽象子类中没有实
现。
抽象类如果修改了一个抽象方法的名称,子类同样编译不过,但若修改的是非抽象方法,编译没有问题。
//两者看起来看是差不多的,只不过修改的方法有抽象和非抽象之别。
3. 关于
抽象类如果修改了一个抽象方法的名称,子类同样编译不过,如果修改的是非抽象方法,编译没有问题,这个不确定性恰恰是抽象类的致命
弱点。