【Java】抽象类和接口

抽象类

一个父类设计得非常抽象,以至于它都没有任何具体的实例。

  • 至少包含一个抽象方法。
  • 可以有数据域
  • 不能用new操作符创建它的实例
  • 构造方法定义为protected,因为它只被子类使用

为什么要用抽象方法
提供动态性,方法调用时JVM的动态绑定

关于抽象类的几个关注点

  • 抽象方法不能包含在非抽象类中,抽象方法是非静态的
  • 抽象类是不能使用new操作符来初始化
  • 包含抽象对象的类必须是抽象的
  • 即使子类的父类是具体的,这个子类也可以是抽象的
  • 子类可以覆盖父亲的方法并将它定义为abstract
  • 不能使用new操作符从跟一个抽象类创建一个实例,但是抽象类可以用作一种数据类型(动态性)

接口

是一种与类相似的结构,只包含常量和抽象方法。
注: 由于接口中所有的数据域都是public final static并且所有的方法都是public abstract,所以Java允许忽略这些修饰符。

接口与抽象类

/变量构造方法方法
抽象类无限制子类通过构造方法链调用构造方法,
抽象类不能用new操作符实例化
无限制
接口所有的变量都是
public static final
没有构造方法。接口不能用new操作符实例化所有方法是公共的抽象实例方法

Java只允许类的扩展做单一继承,但是允许使用接口做多重扩展。

  • 装箱 boxing
    将基本类型转换为包装类对象的过程。
    Integer[] array = {1, 2, 3};
  • 开箱 unboxing
    将包装类对象转换为基本类型的过程。
    System.out.print(array[0] + array[1] + array[2]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值