为什么使用接口?

问题

  要求实现防盗门的功能

分析

  • 门有开和关的功能,锁有上锁和开锁的功能
  • 将门和锁分别定义为抽奖类

  那么问题就是防盗门即继承了门的同时又继承了锁,而Java的继承是单继承,接口可多继承

解决

  • 将门定义为抽奖类,锁定义为接口
  • 防盗门继承门,实现锁的接口
  • 解决了多继承,更好的使用多态

什么是接口?

  Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现

  因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

如何使用接口?

  [ public ]   interface   接口名   [ extends   超接口表 ]   {    接口体   }

  接口是一种只由常量定义和抽象方法组成的特殊类。

  接口体中的内容是一系列常量的定义和方法的定义,不提供方法的实现(即没有方法体),用分号结尾。

  接口的所有变量都默认是final   static属性,所有的方法都是public  adstract属性。

  如果一个类要实现某个接口,必须实现接口的所有方法。

面向接口编程

  1. 定义Door抽象类:具有开门,关门的功能
  2. 定义Lock接口:具备上锁,开锁的能力
  3. 编写TheftproofDoor类:继承类实现接口
  4. 编写测试类:让防盗门关门,上锁,开锁,开门
package javaTest4;
//抽象类 门
abstract class Door{
public abstract void open();
public abstract void close();
}
//接口:锁
interface Lock{
int i=1; //都是静态常量
public void lock(); //都是抽象方法
public void unlock();
}
//接口 照相机
interface Crama{
public void takePhotos();
}
//防盗门类
class FDoor extends Door implements Lock,Crama{ @Override
public void open() {
System.out.println("开门");
} @Override
public void close() {
System.out.println("关门");
} @Override
public void lock() {
System.out.println("上锁");
} @Override
public void unlock() {
System.out.println("开锁");
} @Override
public void takePhotos() {
System.out.println("开门时,拍照");
}
}
public class test5 { public static void main(String[] args) {
FDoor fd=new FDoor();
fd.close();
fd.lock();
fd.unlock();
fd.open();
fd.takePhotos();
} }

必须知道的接口特性

  • 接口不可以被实例化,常作为类型使用
  • 接口是一种特殊的抽象类
  • 实现类必须实现接口的所有方法
  • 实现类可以实现多个接口(Java中的多继承)
  • 接口中的变量都是静态常量
  • 接口默认是public

Java 接口篇的更多相关文章

  1. java接口调用——webservice就是一个RPC而已

    很多新手一听到接口就蒙逼,不知道接口是什么!其实接口就是RPC,通过远程访问别的程序提供的方法,然后获得该方法执行的接口,而不需要在本地执行该方法.就是本地方法调用的升级版而已,我明天会上一篇如何通过 ...

  2. Java提高篇——对象克隆(复制)

    假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...

  3. Java提高篇(三三)-----Map总结

    在前面LZ详细介绍了HashMap.HashTable.TreeMap的实现方法,从数据结构.实现原理.源码分析三个方面进行阐述,对这个三个类应该有了比较清晰的了解,下面LZ就Map做一个简单的总结. ...

  4. Java提高篇(三二)-----List总结

    前面LZ已经充分介绍了有关于List接口的大部分知识,如ArrayList.LinkedList.Vector.Stack,通过这几个知识点可以对List接口有了比较深的了解了.只有通过归纳总结的知识 ...

  5. java提高篇(三十)-----Iterator

    迭代对于我们搞Java的来说绝对不陌生.我们常常使用JDK提供的迭代接口进行Java集合的迭代. Iterator iterator = list.iterator(); while(iterator ...

  6. java提高篇(二九)-----Vector

    在java提高篇(二一)-–ArrayList.java提高篇(二二)-LinkedList,详细讲解了ArrayList.linkedList的原理和实现过程,对于List接口这里还介绍一个它的实现 ...

  7. Java提高篇(二八)------TreeSet

    与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的.在<Java提高篇(二七)-----TreeMap>中LZ详细讲解了TreeMap实现机制,如果 ...

  8. Java提高篇(二七)-----TreeMap

    TreeMap的实现是红黑树算法的实现,所以要了解TreeMap就必须对红黑树有一定的了解,其实这篇博文的名字叫做:根据红黑树的算法来分析TreeMap的实现,但是为了与Java提高篇系列博文保持一致 ...

  9. java提高篇(二四)-----HashSet

          在前篇博文中(java提高篇(二三)-----HashMap)详细讲解了HashMap的实现过程,对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素. ...

随机推荐

  1. Python魔法方法(magic method)细解几个常用魔法方法(下)

    接上文,再介绍最后几个常用的魔法方法. 关于__dict__: 先上个例子: class Test(object): fly = True def __init__(self, age): self. ...

  2. JSP从入门到精通

    1. jsp开发环境配置 在windows下配置jsp的开发环境: 假设已经安装好了jdk,下面来配置tomcat 去http://tomcat.apache.org 下载tomcat windows ...

  3. endnote格式

    endnote插入参考文献后的对齐方式和缩进空格 听语音 | 浏览:4780 | 更新:2016-11-28 20:46 1 2 3 4 5 6 7 分步阅读 1.endnote 导入到word参考文 ...

  4. yolo检测系列

    caffe版yolov3 https://github.com/eric612/Caffe-YOLOv3-Windows Windows版本darknet https://github.com/zha ...

  5. HTML5 ----- deviceorientation API

    当我们把设备举到面前,就是坐公交车时玩手机的状态,手机的宽度(水平方向)就是X轴,从左向右依次变大:手机的高度(垂直方向)就是y轴,从下到上依次变大: 眼光盯着屏幕,我们的视线就是Z轴,离我们的眼睛越 ...

  6. [SimplePlayer] 实现一个简单的播放器

    简单的播放器需要实现一个最基本的功能:播放视频文件. 实现这个功能需要包含以下几个步骤: 从视频文件中提取视频图像 在屏幕上显示视频图像 视频帧的同步,也就是保证视频图像在合适的时间在屏幕上显示 从视 ...

  7. Spring 使用介绍(八)—— 零配置(一)

    一.概述 所谓零配置,并不是说一点配置都没有了,而是配置很少而已.通过约定来减少需要配置的数量,提高开发效率. 零配置实现主要有以下两种方式: 惯例优先原则:也称为约定大于配置(convention ...

  8. Codeforces 714A 朋友聚会

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6395268.html A. Meeting of Old Friends time limit p ...

  9. Spring03-AOP

    一. AOP介绍 1. Aop介绍 AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编 ...

  10. Going Home POJ - 2195(费用流)

    就是一个简单题 四个月前a的一道题,今天又看到了,再a一遍吧. 好吧 我想多了 用了bfs求最短路  其实不用的 因为没有障碍物 #include <iostream> #include ...