java 接口和抽象类的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 15:02:32
接口可以继承什么?
抽象类可以继承什么?

在程序设计时,经常会使用接口,原因是:接口只关系功能,但不关心这些功能的具体实现细节。
可以使我们把主要精力放在呈现的设计上,而不必拘泥于细节的实现。也就是说,我们可以通过在接口中声明若干个抽象方法,表面这些方法的重要性,方法体的内容细节有实现接口的类去完成。
使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。
与普通类相比,抽象类可以有abstract方法,也可以有非abstract方法。抽象方法只允许声明,不允许实现,而且不允许使用final和abstract同时修饰一个方法。
抽象类不能用new运算符创建对象:如果一个非抽象类时某个抽象类的子类,那么它必须重写父类的抽象方法,给出方法体,即在子类中将abstract方法重新声明,但必须去掉abstract修饰,同时要保证声明的方法名字、返回类型、参数个数和类型与父类的abstract方法完全相同。这就是为什么不允许使用final和abstract同时修饰一个方法的原因。
做上转型对象:抽象类也可以没有abstract方法;如果一个抽象类时另一个抽象类的子类,它可以重写其父类的abstract方法,也可以继承这个abstract方法。

抽象类与接口的比较
1、两者都可以有抽象方法
2、接口中只可以有常量,不能有变量;而抽象类中既可以有常量也可以有变量。
3、抽象类中也可以有非抽象方法,接口不可以。

接口 可以继承
接口

抽象类 可以继承
抽象类
非 final 的普通类

接口可以理解为纯虚的抽象类

接口可以继承接口
抽象类可以继承接口

都可以 接口可以多继承,抽象类只能单继承

接口可以继承一个以上的接口,抽象类属类当然只能继承一个类。