/*
* 接口大致上可以分为:哑接口,抽象接口,接口类
* 哑接口:就是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. Python的空行

    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始.类和函数入口之间也用一行空行分隔,以突出函数入口的开始. 空行与代码缩进不同,空行并不是Python语法的一部分.书写时不插入空行,Pytho ...

  2. python工具函数

    1. translate translate要比replace要高效,translate支持替换多 使用translate之前必须要创建一个转换表.要创建转换表,可对字符串类型str调用方法maket ...

  3. JAVA 从一个List里删除包含另一个List的数据

    /** * 从listA里删除listB里有的数据 * @param listA * @param listB * @return */ public static List<String> ...

  4. ElasticStack学习(四):ElasticSearch文档使用与操作

    一.文档的CRUD介绍 ElasticSearch中存在五种操作,分别如下: 1.Index 该操作表示:如果文档的ID不存在,则创建新的文档.若有相同的ID,先删除现有文档,然后再创建新的文档,同时 ...

  5. Linux命令学习-cp命令

    Linux中,cp命令的全称是copy,主要作用是复制文件或文件夹,类似于Windows下的复制功能. 假设当前处于wintest用户的主目录,路径为 /home/wintest ,存在文件夹test ...

  6. Spring 核心技术(2)

    接上篇:Spring 核心技术(1) version 5.1.8.RELEASE 1.3 Bean概述 Spring IoC 容器管理一个或多个bean,他们都是根据提供的配置元数据(例如 XML 中 ...

  7. vue项目缓存最佳实践

    需求 在开发vue的项目中有遇到了这样一个需求:一个视频列表页面,展示视频名称和是否收藏,点击进去某一项观看,可以收藏或者取消收藏,返回的时候需要记住列表页面的页码等状态,同时这条视频的收藏状态也需要 ...

  8. GitHub使用整理——从开始到上传项目

    前期准备 首先是github官网: https://github.com/ 下载github工具: https://git-for-windows.github.io/ 进入github创建一个新的项 ...

  9. .NET Core 3.0之深入源码理解HttpClientFactory(一)

    写在前面 创建HttpClient实例的时候,在内部会创建HttpMessageHandler链,我们知道HttpMessageHandler是负责建立连接的抽象处理程序,所以HttpClient的维 ...

  10. Unity AR Foundation 和 CoreML: 实现手部的检测和追踪

    0x00 前言 Unity的AR Foundation通过上层抽象,对ARKit和ARCore这些底层接口进行了封装,从而实现了AR项目的跨平台开发能力. 而苹果的CoreML是一个可以用来将机器学习 ...