/*
* 接口大致上可以分为:哑接口,抽象接口,接口类
* 哑接口:就是public,protected(注意protect有包权限,只有本包才开放接口)方法
* 抽象接口:就是哑接口变为抽象方法,在前面追加abstract方法
* 接口类:就是interface 声明的类(其本质上还是个类,可继承,可向上转换)
* interface
* 接口类本身又分为抽象类,非抽象类
* 非抽象类:
* 里面所有的方法都是public(不能用protect修饰) 但是接口本身具有包访问权限
* 里面的域都是final和static的,意味着不能复写,只有一份内存
* interface可以向上转换,这直接产生多态,对消息循环很方便
* 抽象类:在接口类前面加上abstarct 修饰即可
* 唯一的区别是抽象接口类不能有域的存在
* */

public class MyInterface {
  public static void main(String []args){
    Man man=new Man();
    man.run();
    //简单的代理适配器模式
    Delegate de=new Delegate();
    de.run(new Adapter(man));
  }

}

abstract interface action{
  void run();
}
abstract class Human{
  abstract void shape();//抽象方法 必须声明抽象类
  Human(){
  System.out.println("Human()");
  }
}
class Man extends Human implements action{

  void shape() {
    // TODO Auto-generated method stub
    System.out.println("man.shape()");
  }
  Man(){
    System.out.println("man()");
    shape();
  }
  public void run() {
    // TODO Auto-generated method stub
    System.out.println("man.run()");
  }
}
class Man2 extends Human implements action{

  void shape() {
    // TODO Auto-generated method stub
    System.out.println("man2.shape()");
  }
  Man2(){
    System.out.println("man2()");
    shape();
  }
  void sex(){//添加一个性别方法

  }
  public void run() {
    // TODO Auto-generated method stub
    System.out.println("man2.run()");
  }
}
class Delegate{//代理action动作
  void run(action act){
    act.run();
  }
  Delegate(){

  }
}
class Adapter implements action{//将对象适配成action
  action act;
  Adapter(Object obj){
    act=(action) obj;    //充分利用接口的向上转换多态特性
  }
  public void run() {
    // TODO Auto-generated method stub
    act.run();
  }

}

java随笔之接口的更多相关文章

  1. 【转】java通用URL接口地址调用方式GET和POST方式

    java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...

  2. Java继承和接口

    接口最关键的作用,也是使用接口最重要的一个原因:能上溯造型至多个基础类.使用接口的第二个原因与使用抽象基础类的原因是一样的:防止客户程序员制作这个类的一个对象,以及规定它仅仅是一个接口.这样便带来了一 ...

  3. java中set接口的用法

    java中的set接口有如下的特点: 不允许出现重复元素: 集合中的元素位置无顺序: 有且只有一个值为null的元素. 因为java中的set接口模仿了数学上的set抽象,所以,对应的数学上set的特 ...

  4. Java调用webservice接口方法

                             java调用webservice接口   webservice的 发布一般都是使用WSDL(web service descriptive langu ...

  5. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  6. JAVA ,Map接口 ,迭代器Iterator

    1.    Map 接口概述 java.util.Map 接口描述了映射结构, Map 接口允许以键集.值集合或键 - 值映射关系集的形式查看某个映射的内容. Java 自带了各种 Map 类. 这些 ...

  7. java抽象类和接口区别

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  8. java抽象类与接口的区别及用法

    java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...

  9. 如何让Java和C++接口互相调用:JNI使用指南

    如何让Java和C++接口互相调用:JNI使用指南 转自:http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos ...

随机推荐

  1. AntD使用timePiacker封装时间范围选择器(React hook版)

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  2. filebeat直连elasticsearch利用pipeline提取message中的字段

    这里使用filebeat直连elasticsearch的形式完成数据传输,由于没有logstash,所有对于原始数据的过滤略显尴尬(logstash的filter非常强大). 但是由于业务需求,还是需 ...

  3. 微服务-springcloud-注册中心

    创建服务注册中心(eureka-server) 1.创建项目,选择 Eureka Server 别的都不要选择,next-finish 2.application.yml中写入如下信息:通过eurek ...

  4. MySQL之基础操作

    一.安装 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数 ...

  5. BZOJ 1085:[SCOI2005]骑士精神(A*算法)

    题目链接 题意 中文题意. 思路 首先找到空白的格子,因为空白的格子可以和其他的骑士换.从空白的点开始搜索,每次和其他点交换.因为最多只有十五步,可以做16次搜索,搜索的时候,记录走过的步数和至少剩余 ...

  6. jsp传值

    是由a1.jsp发出请求然后由a2.jsp转发给ok.jsp,由ok.jsp响应a1.jsp. 但是这个转发过程是在服务端发生的,客户端不知道所以地址是不变的 转发请求的代码: request.get ...

  7. Jmeter接口测试实例-牛刀小试

    本次测试的是基于HTTP协议的接口,主要是通过Jmeter来完成接口测试,借此熟悉Jmeter的基本操作. 本次实战,我是从网上找的接口测试项目,该项目提供了详细的接口文档,我们可以通过学习接口文档来 ...

  8. C语言学习书籍推荐《C语言入门经典(第5版)》下载

    霍尔顿 (Ivor Horton) (作者), 杨浩 (译者) 下载地址:点我 C语言是每一位程序员都应该掌握的基础语言.C语言是微软.NET编程中使用的C#语言的基础:C语言是iPhone.iPad ...

  9. MYSQL千万级别数据量迁移Elasticsearch5.6.1实战

    从关系型库中迁移数据算是比较常见的场景,这里借助两个工具来完成本次的数据迁移,考虑到数据量并不大(不足两千万),未采用snapshot快照的形式进行. Elasticsearch-jdbc,Githu ...

  10. 教你用Python制作微信好友背景墙

    目录: 0 引言 1 环境 2 代码实现 3 后记 0 引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这 ...