java 中abstract class和interface有什么区别

 我来答
fuyunzheyan
2012-07-31 · TA获得超过249个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:147万
展开全部
abstract 修饰的CLASS是抽象类
抽象类(abstract class)可以有抽象方法,也可以有具体是方法,抽象类只能支持单继承
interface 接口
接口可以有抽象的方法,不存在具体的方法,接口可以多继承(多实现)

如下是我以前学习的一些笔记你可以参考下
/*理解java接口定义
* 1.JAVA接口没有构造器
* 2.JAVA接口中的成员变量必须显式赋初始值
* 3.JAVA接口中的方法没有方法体,定义形式是[public][abstract] 方法类型 [方法名]([参数列表]);
* 4.JAVA接口的定义形式如下:
* [修饰符] interface 接口名[extends 父接口名列表]{
[public] [static] [final] 数据类型 成员变量名=变量值;
[public][abstract] 方法类型 方法名([参数列表]);
}
*
* 5.JAVA接口中的成员变量默认为public static final类型的,如inti=1; 相当于是public static final inti=1;
* JAVA接口中常量默认是加了public static final 意味着:公用,共用,并且不可更改。
* 6.JAVA接口是不能被实例化的
* 7.JAVA接口中的方法不能用static修饰
* 8.JAVA接口中的所有的方法都是抽象的,不管有没abstract修饰,且默认是
public abstract 方法类型 方法名([参数列表]);
* 9.JAVA接口中子接口可以继承多个父接口,子类可以实现多个父接口
* */

/*理解JAVA抽象类
* 1.抽象类不能被实例化.
* 2.抽象类有构造器,且他的构造在他的子类被实例化时被调用的顺序和普通类调用的顺序是一样的(先父后子).
* 3.抽象类内部的方法可以不是抽象方法,也就是说抽象类内部可以有具体的方法.
* 4.抽象类的抽象方法属于一种不完整的方法,只含有声明和定义,没有方法主体.
* 5.如果抽象的某个子类是普通类(非abstract类型的类),那么该子类必须Override抽象类中所有的抽象方法.
* 6.抽象类的子类也是抽象类的话,那么该子类既可以Override父类中的方法,也可以不Override父类中的方法.
* 7.普通类中不能定义抽象方法.
* 8.static不能修饰抽象方法
* 备注:为了方便理解,所谓的普通是指如下形式定义的类
* public class X{} 或 class A XX{}
* */
匿名用户
2012-07-31
展开全部
abstract修饰的类中可以有非抽象的方法,而interface修饰的类中全是抽象方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修怀芹26
2012-07-31 · TA获得超过1208个赞
知道小有建树答主
回答量:695
采纳率:75%
帮助的人:452万
展开全部
abstract class抽象类 可以有抽象方法和具体方法,也可以定义成员变量和成员常量。
interface 接口只能定义抽象方法与常量,不能有具体方法也不能定义成员变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
csj_9_9
2012-07-31
知道答主
回答量:33
采纳率:0%
帮助的人:17.2万
展开全部
abstract class是抽象类,可以有具体方法的实现
interface 接口,不能有具体方法的实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式