接口的概念
接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。
接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。这样将功能的定义与实现分离,优化了程序设计。
请记住:一切事物均有功能,即一切事物均有接口。

接口的定义与定义类的class不同,接口定义时需要使用interface关键字

如:

interface Demo { ///定义一个名称为Demo的接口。
  public abstract void lijun1();
  public abstract void lijun2();
}

定义子类去覆盖接口中的方法。类与接口之间的关系是 实现。通过 关键字 implements
class DemoImpl implements Demo { //子类实现Demo接口。
  //重写接口中的方法。
  public void lijun1(){}
  public void lijun2(){}
}

多态调用的三种格式
* A:多态的定义格式:
* 就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();

* B: 普通类多态定义的格式
父类 变量名 = new 子类();
举例:
class Fu {}
class Zi extends Fu {}
//类的多态使用
Fu f = new Zi();
* C: 抽象类多态定义格式
抽象类 变量名 = new 抽象类子类();
举例:
abstract class Fu {
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Fu fu= new Zi();
D: 接口多态定义的格式
接口 变量名 = new 接口实现类();
如: interface Fu {
public abstract void method();
}
class Zi implements Fu {
public void method(){
System.out.println(“重写接口抽象方法”);
}
}
//接口的多态使用
Fu fu = new Zi();

案例分析
* 阶段一:
使用笔记本,笔记本有运行功能,需要笔记本对象来运行这个功能
* 阶段二:
想使用一个鼠标,又有一个功能使用鼠标,并多了一个鼠标对象。
* 阶段三:
还想使用一个键盘 ,又要多一个功能和一个对象
* 问题:每多一个功能就需要在笔记本对象中定义一个方法,不爽,程序扩展性极差。
降低鼠标、键盘等外围设备和笔记本电脑的耦合性。

最新文章

  1. js活动倒计时
  2. 自旋锁-SpinLock(.NET 4.0+)
  3. JS生成GUID算法
  4. php获取本周和上周的开始日期和结束日期
  5. R 安装与环境配置
  6. SimpleUrlHandlerMapping用法
  7. 关于SQL优化的一个小试例子
  8. 基于springMVC+springSecurity3.x+Mybaits3.x的权限系统,,开放源码,支持开源
  9. Oracle优化技术
  10. Android单元测试Junit (一)
  11. (简单) UVA 11624 Fire! ,BFS。
  12. spring boot跨域设置
  13. 静态资源压缩(GZIP) 专题
  14. SSH免密码登录配置
  15. python语法_注释
  16. 【Ansible 文档】【译文】Playbooks 变量
  17. 如何卸载旧版本的dotnet core
  18. Spring boot(三)在Spring boot中Redis的使用
  19. 转录组表达量计RPKM、FPKM、TPM说明
  20. [Javascript] Avoiding Mutations in JavaScript with Immutable Data Structures

热门文章

  1. mapreduce-实现单表关联
  2. BZOJ3296:[USACO2011OPEN]Learning Language
  3. Makefile 自动产生依赖 ***
  4. Azure上批量创建OS Disk大于30G的Linux VM
  5. H264码流结构分析和rtp打包结构详解
  6. 浅谈NB_LOT和LTE CAT M1
  7. 专题练习HDU题集 图论
  8. Jenkins构建触发器定时Poll SCM、Build periodically
  9. &(((struct A*)NULL)->m_float)---offsetof
  10. java 多线程系列基础篇(一)