一、基本概念
1、接口为引用数据类型,编译后也是class字节码文件
2、接口是完全抽象的,(抽象类是半抽象的),属于特殊的抽象类
3、接口定义方法:[修饰符列表]interface 接口名{}
4、接口所有元素都是public公开的
5、接口中的public abstract修饰符是可以省略的
6、接口中的抽象方法是不能有方法体的
7、接口中的常量的public static final是可以省略的
8、实现使用implements关键字完成,接口与类之间叫做实现
9、类可以实现多个接口,类似多继承
 
二、使用注意、举例
1、接口支持多接口继承
 
2、接口只包含两部分一部分常量,一部分抽象方法
 
3、当一个非抽象的类实现接口的话,必须将所有抽象方法全部实现
重写抽象方法后正常
 
4、接口与接口之间进行强制类型转换时,没有继承关系,也可以强转,但可能出现ClassCastException异常
 
 
5、extends与implements可以共存,extends在前,implements在后
 
三、接口在开发中的
1、提高程序扩展性
2、解耦合
3、符合面向对象(接口),符合ocp原则,接口使用多态
4、举例说明

 package cnblogs;
public class TestAdvance04interface02 {
public static void main(String[] args) {
//创建厨师
FoodNeum cooker1=new ChinaCooker();
//创建顾客
Customer customer=new Customer(cooker1);
//点餐
customer.order();
}
}
class Customer{
//养成封装习惯,顾客里有一个菜单,customer has a Foodnium,但凡is a可以设置为继承,has a可以设置为属性
private FoodNeum foodNeum;
public Customer(){};
//getter and setter,配合封装使用,是王八的屁股-规定
public FoodNeum getFoodNeum() {
return foodNeum;
}
public void setFoodNeum(FoodNeum foodNeum) {
this.foodNeum = foodNeum;
}
//构造方法,用户获取初始,实例化
public Customer(FoodNeum foodNeum){
this.foodNeum=foodNeum;
};
//提供点餐方法
public void order(){
foodNeum.ShiZhiChaoJiDan();
foodNeum.YuXiangRouSi();
}
}
interface FoodNeum{
void ShiZhiChaoJiDan();
void YuXiangRouSi();
}
class ChinaCooker implements FoodNeum{
public void ShiZhiChaoJiDan(){ System.out.println("中餐西红柿炒鸡蛋"); }
public void YuXiangRouSi(){ System.out.println("中餐鱼香肉丝"); }
}
class AmeicaCooker implements FoodNeum{
public void ShiZhiChaoJiDan(){ System.out.println("西餐西红柿炒鸡蛋"); }
public void YuXiangRouSi(){ System.out.println("西餐鱼香肉丝"); }
}

查看运行结果

 
 

java进阶(3)--接口的更多相关文章

  1. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  2. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  3. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  4. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  5. Java进阶代码

    本文重在温习……不过初学以及进阶高手不可错过 1.  public static void arraycopy(全小写)(object src,int srcPos,object dest,int d ...

  6. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...

  7. JAVA进阶之旅(一)——增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法

    JAVA进阶之旅(一)--增强for循环,基本数据类型的自动拆箱与装箱,享元设计模式,枚举的概述,枚举的应用,枚举的构造方法,枚举的抽象方法 学完我们的java之旅,其实收获还是很多的,但是依然还有很 ...

  8. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  9. Java进阶(三十二) HttpClient使用详解

    Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...

随机推荐

  1. Yii2源码分析(一):入口

    写在前面,写这些随笔是记录下自己看Yii2源码的过程,可能会有些流水账,大部分解析放在注释里说明,由于个人水平有限,有不正确的地方还望斧正. web入口文件Index.php // 定义全局的常量,Y ...

  2. 百万级别数据Excel导出优化

    前提 这篇文章不是标题党,下文会通过一个仿真例子分析如何优化百万级别数据Excel导出. 笔者负责维护的一个数据查询和数据导出服务是一个相对远古的单点应用,在上一次云迁移之后扩展为双节点部署,但是发现 ...

  3. java 面向对象(三十九):反射(三)了解ClassLoader

    1.类的加载过程----了解 2.类的加载器的作用 3.类的加载器的分类 4.Java类编译.运行的执行的流程 5.使用Classloader加载src目录下的配置文件 @Test public vo ...

  4. 数据可视化之powerBI基础(十)快速度量值,帮你更快的进行数据分析

    https://zhuanlan.zhihu.com/p/64414831 刚开始学习PowerBI,最头疼的可能就是度量值了,毕竟用了Excel这么多年,只相信自己眼睛看到的,对于这个"虚 ...

  5. 数据可视化之 图表篇(一)Power BI可视化,几张图表认识疫情现状

    ​近期国际疫情愈演愈烈,在这个特殊的时期,一方面仍要照顾好自己.不要为疫情防治添乱,另一方面,也可以利用疫情数据提升自己的数据分析和可视化技能. 下面是我制作的几个可视化图表,分别注释了每个可视化用到 ...

  6. Python之进程、线程、协程篇

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  7. HDU - 1520 Anniversary party (树的最大独立集)

    Time limit :1000 ms :Memory limit :32768 kB: OS :Windows There is going to be a party to celebrate t ...

  8. 消除win10桌面图标的右下方小箭头

    很容易的小东西,在这里简单提一下 新建一个记事本,写下以下代码,改为.bat后缀,双击运行,然后箭头消失 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Micro ...

  9. Shell基本语法---if语句

    if语句 格式 #单分支 if [ 条件判断 ]; then 执行动作 fi if [ 条件判断 ]; then 执行动作 else 执行动作 fi #多分支 if [条件判断]; then 执行动作 ...

  10. Asp.Net Core 附加进程调试

    第一种:VS调试 vs打开项目,F5启动调试 第二种:附加到w3wp.exe进程调试 一.安装NET Core Windows Server Hosting软件包 安装 .NET Core 托管捆绑包 ...