文章标题

Java 接口&抽象类

  • 接口和抽象类提供了一种将接口与实现分离的更加结构化的方法

抽象类

  • 抽象方法: 只用声明,而没有具体的实现。声明:abstract void fun();
    抽象类:如果一个类没有足够的信息描述一个具体的对象,而需要其他的类来支撑它。
  • 使用注意:
    1. 抽象类不能被实例化,实例化的工作应由其子类完成,它只需要定义抽象方法接口即可。
    2. 抽象类方法必须由子类重写
    3. 如果一个类包含抽象方法,该类必须定义成抽象类,使用abstract关键字修饰
    4. 抽象类中可以包含具体的方法,也可以不包含抽象方法
    5. 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则子类必须定义为抽象类
    6. 子类中的抽象方法不可与父类抽象方法同名
    7. abstract不能与final并列修饰同一个类, abstract 不能与 private、static、final 或 native 并列修饰同一个方法
      • 因为被final修饰的类不能被继承,如果一个抽象类不能被继承,那这个抽象类就没用了,同样,抽象方法也需要被子类继承

接口

  • 接口中可以含有变量和方法。接口中的变量会被隐式地指定为public static final,方法会被隐式地指定为public abstract
  • 接口是抽象类的延伸,避免了类不能多继承的问题。一个类只能有一个父类,而可以实现多个接口。
  • 使用注意:
    1. 接口中的方法和变量的访问权限自动被声明public
    2. 实现接口的非抽象类必须实现该接口的所有方法。
    3. 实现多接口时,避免方法名重复

接口和抽象类的区别

  1. 语法层面上
    1. 抽象类可以提供成员方法的实现细节,而接口只能存在public abstract方法
    2. 抽象类的成员变量可以是各种类型的,而接口的成员变量只能是public static final类型
    3. 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法
    4. 一个类只能继续一个抽象类,而一个类却可以实现多个接口
  2. 设计层面
    1. 抽象类是对一种事物的抽象,即对类的抽象,而接口是对行为的抽象。一个类如果继承一个类,则它就是这种事物,具有它全部的属性和行为。而一个类实现一个接口,则是它增添了某种行为
    2. 抽象类作为很多子类的父类,它是一种模板设计设计。而接口是一种规范,它是一种辐射式设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值