java中抽象与接口

抽象

  1. 定义:将父类中无法统一实现的行为进行抽象化,由子类具体实现这些行为。
  2. 形式:
    1. abstract关键字来修饰类叫抽象类,修饰方法叫抽象方法,没有具体的实现。
    2. 含有抽象方法的类必须声明为抽象类
    3. 不能实例化,有构造器。只能被用来继承,必须要重写抽象方法。
    4. 不能用abstract修饰变量、代码块、构造器
    5. 不能用abstract修饰私有方法、静态方法、final的方法、final类
    6. 可以有独自的方法和属性
  3. 应用:模板方法设计模式
    1. 当功能内部一部分实现是确定的,一部分实现是不确定的。这时可把不确定的部分暴露出去,让子类去实现。
    2. 换句话说,在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了。但是某些部分易变,易变部分可以抽象出来,供不同子类实现。这就是一种模板模式。

接口

  1. 定义:
    1. java中只能单继承,接口可以实现一个类的多重实现
    2. 接口的本质是契约,标准,规范。
    3. 继承是一个"是不是"的关系,而接口实现则是 "能不能"的关系
  2. 形式:
    1. 抽象方法和常量值定义的集合
    2. 默认成员变量是public static final 修饰
    3. 默认成员方法是public abstract修饰
    4. 不能实例化、没有构造器
    5. 接口间可以实现多继承机制
  3. 新特性(jdk1.8)
    1. 静态方法:使用 static 关键字修饰。可以通过接口直接调用静态方法,并执行其方法体。
    2. 默认方法:默认方法使用 default 关键字修饰。可以通过实现类对象来调用。
  4. 应用:代理模式
    1. 代理模式是Java开发中使用较多的一种设计模式。代理设计就是为其他对象提供一种代理以控制对这个对象的访问。

对比

区别点抽象类接口
定义包含抽象方法的类主要是抽象方法和全局常量的集合
组成构造方法、抽象方法、普通方法、常量、变量常量、抽象方法、(jdk8默认方法、静态方法)
使用子类继承抽象类子类实现接口
关系抽象类可以实现多个接口接口不能继承抽象类,但允许继承多个接口
常见设计模式模板方法简单工厂、工厂方法、代理模式
对象都通过对象的多态产生实例化对象同一
局限抽象类有单继承的局限接口没有局限性
实际作为一个模板是作为一个标准或是表示一种能力
选择如果抽象类和接口都可以使用,建议使用接口,避免单继承的局限性同一
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值