接口与abstract类

在Java语言中,abstract class 与 interface 是支持抽象类定义的两种机制,均可以定义抽象方法,实现抽象编程。但是两者有很大的区别。

1.语法上的不同

(1). 抽象类既可以包含抽象方法,也可以包含非抽象方法;接口中的方法必须都是抽象方法。
(2).抽象类中抽象方法的访问类型可以是 public、protected 和 default;接口中抽象方法的访问类型只能是public。
(3).抽象类中可以有普通成员变量;接口的成员变量都是常量,由public static final 显示或隐示修饰。
(4).抽象类中可以有构造方法;接口中没有构造方法。

抽象类接口
方法包含抽象方法和非抽象方法都是抽象方法
抽象方法访问权限public、protected 、 defaultpublic
成员变量普通成员变量、常量常量
构造方法可以有
2.设计思想上的不同

(1).抽象类是对一类事物的抽象,包括属性和行为;接口是对行为的抽象,是对类局部(行为)进行抽象。
举个例子:灯和计算机是两中不同的事物,但它们都有两个行为(动作),即开、关。在设计的时候可以将灯设计为一个类Lamp,将计算机设计为另一类Computer。但不能将开、关设计成类,因为 它们是动作,是行为特征,而不是一类事物的抽象描述。可以将其设计为一个接口OnOff,包含两个方法on()、off(),Lamp和Coumper继承并实现OnOff中的方法on()、off()。
(2).抽象类作为子类的父类,相当于一个模板,子类可以在这个模板的基础上进一步修饰、处理。如果要对抽象功能进行修饰或扩充(如增加一个新的方法),只要修改抽象类本身,在抽象类中增加具体实现就可以,不需要修改子类。
接口是一种行为规范,如果对接口进行变更,则所有实现这个接口的类都必须进行相应的改动

3.继承的不同

(1).抽象类继承:
子类只能继承一个抽象父类;extends
如果子类是抽象类,不要求一定重写父类方法;
如果子类不是抽象类,则要求子类一定要实现(重写)父类中的抽象方法。
(2).接口类继承:
子类可以继承多个接口父类;impelements
如果是一个子接口,可以扩展父接口的方法;
如果是一个子抽象类,可以部分或全部实现父接口的方法;
如果子类不是抽象类,则要求子类一定要实现(重写)父接口中定义的所有方法。
注意:接口类继承时,重写方法时要用public修饰,因为访问权限不允许降低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值