一、基本概念
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. VS插件 resharper安装破解教程

    https://masuit.com/20 ReSharper是一款由jetbrains开发的针对C#, VB.NET, ASP.NET, XML,和XAML的编辑器.沿袭了jetbrains开发工具 ...

  2. Jmeter系列(36)- 详解 Loop Controller 循环控制器

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 前言 这应该是最简单的控制器了,我们快 ...

  3. python 设计模式专题(一):目录篇

    一.创建型设计模式 1.工厂模式 2.建造者模式 3.原型模式 二.结构型设计模式(组合) 1.适配器模式 2.装饰器模式 3.外观模式 4.单例模式 5.mvc模式 6.代理模式 三.行为型设计模式 ...

  4. 数据可视化之 图表篇(五) PowerBI图表不够炫酷?来看看这个

    现在这个大数据时代,每时每刻.各行各业都在产生多种多样的海量数据,如何简单高效的来理解.挖掘这些数据,发现背后的见解就非常重要. 本文介绍这个图表就可以帮你快速发现海量数据背后的见解,微软研究院打造的 ...

  5. dataframe一次小实验

    老师搞不清,一个ndarray[df['columns']==a],返回的是什么,目前看来应该是df[] == a 的索引

  6. [Qt插件]-03创建Qt Designer自定义部件

    如何创建自定义部件并添加到Qt Designer来爽快的拖动部件可视化界面设计?   Qt Designer基于插件的架构使得它可以使用用户设计或者第三方提供的自定义部件,就像使用标准的Qt部件一样. ...

  7. P2060 马步距离(洛谷)

    我们无论遇到什么困难,都不要拖,微笑着面对他,战胜拖延的最好方法就是面对拖延. 今天又拖延了…… 早晨听完老师讲课,本想做一道题练练手的,结果因为懒,瘫了一上午.最后在固定的刷题时间去面对了这道题,然 ...

  8. 机器学习 | SVD矩阵分解算法,对矩阵做拆分,然后呢?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题第28篇文章,我们来聊聊SVD算法. SVD的英文全称是Singular Value Decomposition,翻译过来 ...

  9. element-ui设置级联选择器表单验证

    data(){<el-form :model="ruleForm" :rules="rules" ref="ruleForm" lab ...

  10. apache 添加多个站点

    虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术.可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口,也可让多个网站拥有不同的域 ...