18.Java之接口(什么是interface,接口的注意事项和细节,实现接口与继承类的比较,接口与抽象类的比较)

18.1.基本介绍

接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。

18.2.语法

(public 或者 默认) interface 接口名 {
属性
方法
}

1.在 jdk7.0 前,接口里的所有方法都没有方法体,即都是抽象方法
2.在 jdk8.0 后,接口可以有静态方法,默认方法,也就是接口中可以有方法的具体实现

class 类名 implements 接口 {
自己属性;
自己方法;
必须实现的接口的抽象方法
}

18.3.接口的注意事项和细节
  1. 接口不能被实例化
  2. 接口中所有的方法是 public 方法,接口中抽象方法,可以不用 abstract 修饰
    例子:void cry(); 实际上是 public abstract void cry();
  3. 一个普通类实现接口,就必须将该接口的所有方法都实现
  4. 抽象类实现接口,可以不用实现接口的方法
  5. 一个类同时可以实现多个接口
  6. 接口中的属性只能是 final,而且是 public static final 修饰符
    例子:int a = 1; 实际上是 public static final int a = 1;(必须初始化)
  7. 接口中属性的访问形式:接口名 . 属性名
  8. 接口不能继承其它的类,但是可以继承多个别的接口
    例子:interface A extends B,C {}
  9. 接口的修饰符,只能是 public 和默认,这点和类的修饰符是一样的
18.4.实现接口与继承类的比较
  • 接口和继承解决的问题不同
    继承的价值主要在于:解决代码的复用性和可维护性
    接口的价值主要在于:设计,设计好各种规范(方法),让其它类去实现这些方法
  • 接口比继承更加灵活
    继承是满足 is - a 的关系,而接口只需满足 like - a 的关系
  • 接口在一定程度上实现代码解耦 [即:接口规范性 + 动态绑定机制]
18.5.接口与抽象类的比较
抽象类 abstract接口 interface
定义不能实例化对象的类。通过abstract class来定义抽象类。抽象类必须被继承才能被使用。一个类通过extends关键字来继承抽象类。接口不是类是抽象方法的集合。通过Interface来声明接口。一个类通过implements关键字来实现接口中的抽象方法。
作用is-a关系 是什么like-a 能做什么
描述描述对象的属性和方法,关注的是事物本身的抽象声明类要实现的方法,关注的是操作行为的规范
成员方法抽象类的方法有方法体,可以实现方法的具体功能接口中只有方法的声明,没有方法体(接口中的方法默认public abstract类型)
成员变量抽象类的成员变量可以是各种类型接口中成员变量只能是public static final类型(公共静态常量,必须初始化)
static修饰符抽象类可以有静态代码块和静态方法接口中没有静态代码块,静态方法看JDK版本
继承关系一个类只能继承一个抽象类一个类可以实现多个接口,接口可以继承多个别的接口
优缺点优点:实现公共特性的提取,使具体类可以从抽象类自动得到缺省实现,复用性强,简化代码 缺点:单继承,使子类的功能的扩展性大打折扣优点:一个类可以实现多个接口,接口可以使这个类不仅具有主类型的行为,而且具有其他的次要行为,比如 HashMap主要类型是Map,而Cloneable接口使它具有一个次要类型,这个类型说明它可以安全的克隆
使用建议用于给子类提供一个抽象的描述,用作主要类型的说明用于给子类提供多个功能的补充,用作次要类型的说明

相同点:均不可实例化,均需要子类 继承/实现 对应的抽象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值