用生活中的例子解释java中的接口

阅读本文前置条件

需要你掌握接口和抽象类的基本定义与区别。

小例子

抽象类

  一说到公司的财务人员,大家都知道他的行政职能是什么。

  这个职位就是抽象类。其中那套财政处理流程就是抽象类中具体的方法。

  这个抽象类(职位)并不能直接处理财务问题,只是规定了在这个职位上的人应该遵循这套办事流程。

具体类

  每个职员都有各自不同的特性,比如工资差异,回家的方式等。

  这个人员就是具体的类,继承自这个财务职位,但是有各自差异的方法。

  这个具体类(财务人员)是直接处理财务问题,是一个可以产生活动的类(人员)。其中哪些差异的方法就是增强的功能或者扩充的功能,对于财务这个具体的职位没有什么用。

接口

  有一天,政府需要当地每个公司上交一份在职员工情况表。只告诉每个公司,需要在职员工的年龄,工资等。

  这里政府需要的在职员工,就是一个接口。规定每个公司需要提供这些在职员工的信息。

  这些获得员工情况的方法并不需要政府来具体描述。政府可以通过规定的接口方法来获取每个在职员工的情况。

总结

  接口是一套规范,一个系统需要这个接口来规范这个接口下的对象应该具有什么方法和属性。实现这个接口的对象就需要完成这些规范实现这些方法和属性。在这个基础上这个系统就可以根据具体情况使用不同的对象,可以只关心是否继承了此接口不用关心其它的内容。

  抽象类是定义在接口下的,在具体类上的。主要是规范每个对象应该按照某种具体的策略或者方法来实现其中具体的方法。

  具体类就是可以new的类,是可以产生具体活动,调用具体方法和属性的类。可以这么理解,jvm中运行的所有活动的类都是具体的对象。

原文地址:https://www.cnblogs.com/Dbbf/p/10718290.html

时间: 2024-08-28 14:30:50

用生活中的例子解释java中的接口的相关文章

全面解释java中StringBuilder、StringBuffer、String类之间的关系

http://www.jb51.net/article/33398.htm String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似 1. String 类  String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

C中的无符号整数在java中的处理

C中的无符号整数在java中的处理 * 因为java中整数都是有符号的,这意味着java中的整数比C中的无符号整数少一位有效数字, * 比如:32768用C无符号整数int16表示是正常的,但用java short(占两个字节)表示则变成了负数 * 所以在java中应该找有效数字位数更大的类型来表示 * 比如:无符号int16在取到2个字节之后应该用int表示 * 无符号int32在取到4个字节之后应该用long来表示 * C中的有符号整数在java可以正常处理 public class Sho

用简易例子讲Java中的回调机制

首先说点题外话.为什么要写这篇文章,因为在看J.U.C包的FutureTask源码的时候,有一个done()方法,这是个抽象方法,用户实现它之后,FutureTask会在执行完后调用这个方法.这就是回调机制,回调的思想就是: 类A调用类B的b方法 类B的b方法执行完毕主动调用类A的callback()方法 给出思想过于抽象,所以我会举出一个简单的实例(虽然简单,但是能说明问题),并总结Java实现回调的步骤. 实例基于知乎上一个解释什么是回调机制的回答. 描述:?一个顾客入住了一个酒店,酒店提供

【Java】Java中的Collections类——Java中升级版的数据结构【转】

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*;   一.动态.有序.可变大小的一维数组Vector与ArrayList Collecti

【Java】Java中的Collections类——Java中升级版的数据结构

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*; 一.动态.有序.可变大小的一维数组Vector与ArrayList Collection

OC中的@interface和java中的区别以及 @implementation @protocol

java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时,他们两者才建立了关系,例如: [html] view plaincopyprint? interface AI{ void print(); }; class AC{ }; 这时候,AI和AC是独立存在,AC不会因为没有和AI建立关系而编译错误,将AC做以下修改后,AI才和AC建立了关系,AC必须实现A

C++学习笔记_02 C++中的const和Java中的final关键字的区别

(1)final在java中定义常量,可作用于基本类型或者类类型,若是作用于类类型,则此类类型不能作为父 类被继承,也就是说它的下面不能有子类,这样的类叫做原子类.    C++中的const定义常量 (2)Java中的final如果是对于基本类型,那和C++的const是一样的    但是如果是对对象而言,不同了     (3)final表示这个句柄是不可改变的    final Object obj=(Object)new String("a");    obj=(Object)n

具体解释java中的volatilekeyword

一.为什么要有volatilekeyword 预计非常多java刚開始学习的人都被volatile这个keyword迷惑过.尽管网上有非常多讨论volatile的文章,但它们有的过于讲述底层原理,而没有说明其应用场景,让刚開始学习的人看后还是一头雾水:有的过于使用类比解说.造成了一定的错误.这种文章更害人.以下,小弟试着分析下volatilekeyword的作用及使用方法.希望能给大家带来一定的启示.文中错误之处,请各位大神指正. 我们知道,在多线程编程中,多个线程在訪问共享变量时,必须进行必要