【JAVA】接口与抽象类的区别与联系

区别

1. 关键字

    抽象类的修饰符必须是 public abstract。

    接口的默认修饰符是 public abstract ,可写可不写。

2. 继承

    一个类只能继承一个抽象类。

    一个类可以实现多个接口。

3. 变量

    接口内的变量是常量,必须初始化。

    抽象类的变量可选择是否成为常量,非常量可选择是否初始化。

4. 方法实现

    一个类继承一个抽象类后,必须实现抽象类的所有抽象方法,可选择重写抽象类的非抽象方法。

    一个类实现一个接口后,必须实现接口的所有方法,可选择使用接口变量。

5. 接口特点

    5.1 变量的默认修饰符是 public static final ,可写可不写,但使用其他任何修饰符将编译报错。

    5.2 方法的默认修饰符是 public abstract,可写可不写,但使用其他任何修饰符将编译报错。

    5.3 所有实现类共享接口变量。(接口内的变量都是常量,但一般不将常量定义在接口内)

6. 抽象类特点

    6.1 抽象类既可以声明抽象方法也可以声明非抽象方法。

    6.2 抽象方法默认修饰符是 public ,可写可不写,可改为 protected,但使用其他任何修饰符将编译报错。

联系

    1. 可以认为抽象类是接口的特例,Java 只支持单继承,但可以使用接口达到多继承效果。

    2. 抽象类和接口都不能实例化(new 及反射都不行)。

    3. 抽象类的抽象方法和接口中定义的方法都是抽象方法,抽象方法只能有方法名,不能有方法体。

    4. 不被实现的接口和不被继承的抽象类没有存在意义。

    5. 抽象类可以继承抽象类,接口可以继承接口。

 

题外话:

    1. final 声明的类不能被继承,声明的变量不能被修改,声明的方法不能被子类重写。

    2. 重载是同一个类中方法名相同,参数的个数或类型不同;重写是与父类某方法的名称相同,具体实现不同。



End .


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值