抽象类和接口

抽象类

1.抽象方法:只有声明没有实现。例如abstract void test()
抽象方法必须用abstract修饰
2.抽象类:如果含有抽象方法,则为抽象类;抽象类必须用abstract修饰;抽象类不一定必须含有抽象方法,但没有抽象方法的抽象类是没有意义的;抽象类也可以有普通类成员方法和成员变量。
3抽象类和普通类区别:抽象方法必须为public、protected、缺省下为public,不能为private,因为子类就不能继承该抽象方法了;抽象类不能用来创建对象;
如果一个类继承了抽象类,子类必须实现父类的抽象方法,如果没有实现,子类也必须是abstract类。

接口

1.变量:隐式指定并且只能指定为public static final
2.方法:隐式指定并且只能指定为public abstract,不能有具体实现
3.接口:一般情况下不在接口中定义变量,接口比抽象类更加“抽象”
非抽象类implements接口,必须实现接口的所有方法
抽象类implements接口,可以不实现接口的抽象方法

区别

1.语法层面
(1)抽象类可以提供成员方法的实现细节,而接口只能有public abstract方法
(2)抽象类中的成员变量可以是各种类型,接口中成员变量只能是public static final类型
(3)抽象类可以有静态代码块和静态方法,接口不能
(4)一个类可以继承一个抽象类,一个类可以实现多个接口
2.设计层面
(1)抽象类是对整个类整体抽象,包括属性(成员变量)和行为(成员方法),而接口只对行为抽象。例如:飞机和鸟是两个抽象类,飞行这个行为可以作为共有的行为设计成接口。实际使用中,孔雀这个子类继承了鸟这个父类,但它不会飞,所以不实现飞行这个接口;而麻雀继承鸟这个父类,实现飞行这个接口。
(2)抽象类作为很多子类的父类,是子类公共的部分,是一种模板式设计。如果需要改动公共部分,只需要改父类。而接口是辐射式设计,如果接口变更了,实现这个接口的类都要进行相应变更。
参考资料:http://www.cnblogs.com/dolphin0520/
http://www.importnew.com/12399.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值