简述Abstract Class和Interface

         Abstract Class和Interface是Java语言中的两种定义抽象类的方式,它们之间有很大的相似性,可以理解为:interface是一种特殊形式的abstract class。

两者区别:
1:一个类(Class)只能继承一个超类(Super class),但是可以实现多个Interface。
2:在Abstract Class中,你可以定义非抽象(Abstract)的方法,但Interface不行。
3:在Abstract Class中,可以定义各种属性,在Interface中只能定义静态的不能被修改的数据成员即:static final。
4:在Interface中只需声明方法,而将方法体留给实现的class来完成,实现类如果未全部实现接口的方法则必须将类定义为抽象类。
5:在Interface中方法默认为public abstract的,变量默认为public static final的。
6:在Abstract Class中,abstract的method不能同时是static,native或synchronized。因为abstract的语义就是方法是多态的,需要子类的实现。static方法则是在本类中实现,不具有多态行为。

注意:
        一个类可以被声明成一个抽象类即使它没有任何抽象方法。但当一个类至少存在一个抽象方法(abstract method)时,则它必须声明为抽象类。 抽象类不能被实例化(be instantiated),但可以实例化非抽象子类(concrete subclass)。
 当一个子类继承某个抽象类时,它可以有两个选择:

     (1)部分实现或完全不实现父类的所有抽象方法,但此时子类必须声明为抽象类。

     (2)实现父类所有的抽象方法,此时子类不必声明为抽象类。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值