Java基础十--接口

一、接口的定义和实例

 /*
abstract class AbsDemo
{
abstract void show1();
abstract void show2();
} 8 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用
9 另一种形式定义和表示,就是 接口 interface。
*/ //定义接口使用的关键字不是class,是interface.
//interface编译后还是.class文件,其实本质上还是class. /*
接口和类中是实现,接口和接口之间是多继承,为什么可以多继承,因为没有方法体,能否多继承的实质看有没有方法体
*/ /*
对于接口当中常见的成员:而且这些成员都有固定的修饰符。
21 1,全局常量: public static final
22
23 2,抽象方法。public abstract 修饰词你自己不写的话程序给你加上。所以我们都写上,那样阅读性强。 由此得出结论,接口中的成员都是公共的权限. 继承没有实现成员变量,方法也是抽象方法,没有函数体的方法,所以实现接口和继承类不冲突,因为接口和类里面的东西不一样
*/
interface Demo
{
public static final int NUM = 4;//static和final和public你不写程序会给你默认加上 public abstract void show1();//public和abstract你不写程序会给你默认加上
public abstract void show2();
}
//类与类之间是继承关系,类与接口直接是实现关系。
/*
接口不可以实例化。 只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。
否则,这个子类就是一个抽象类。 */ class DemoImpl implements /*实现*/Demo
{
public void show1()
{} public void show2()
{ }
} /*
在java中不直接支持多继承,因为会出现调用的不确定性。
所以java将多继承机制进行改良,在java中变成了多实现。 一个类可以实现多个接口。 */ interface A
{
public void show();
} interface Z
{
public int add(int a,int b);
} class Test implements A,Z//多实现
{ public int add(int a,int b)
{
return a+b+3;
}
/**/
public void show(){} } /*
一个类在继承另一个类的同时,还可以实现多个接口。 */
class Q
{
public void method()
{}
} abstract class Test2 extends Q implements A,Z
{ }
/*
接口的出现避免了单继承的局限性。 */ interface CC
{
void show();
}
interface MM
{
void method();
} interface QQ extends CC,MM//接口与接口之间是继承关系,而且接口可以多继承。
{
void function();
} class WW implements QQ
{
//覆盖3个方法。
public void show(){}
public void method(){}
public void function(){}
} class InterfaceDemo
{
public static void main(String[] args)
{ Test t = new Test();
t.show(); // DemoImpl d = new DemoImpl();
// System.out.println(d.NUM);
// System.out.println(DemoImpl.NUM);
// System.out.println(Demo.NUM);
}
}

二、接口和抽象类的区别

 /*
抽象类和接口的异同点: 相同点:
都是不断向上抽取而来的。 不同点:
1,抽象类需要被继承,而且只能单继承。
接口需要被实现,而且可以多实现。
2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
接口中只能定义抽象方法,必须由子类去实现。
3,抽象类的继承,是is a关系,在定义该体系的基本共性内容。
接口的实现是 like a 关系,在定义体系额外功能。 犬按功能分:有导盲犬,搜爆犬。 abstract class 犬
{
abstract void 吼叫();
} //abstract class 导盲
interface 导盲
{
abstract void 导盲();
} class 导盲犬 extends 犬 implements 导盲
{
public void 吼叫()
{
}
public void 导盲(){}
} //在不同的问题领域中,有不同的分析方式。
学员:
学习。
抽烟学员 烟民。 */ class InterfaceDemo
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

三、接口实例

usb接口实例

 /*
2 笔记本电脑使用。
3 为了扩展笔记本的功能,但日后出现什么功能设备不知道。
4
5 定义一个规则,只要日后出现的设备都符合这个规则就可以了。
6 规则在java中就是接口。 */
interface USB// 暴露的规则。
{
public void open();
public void close();
} class BookPC
{
public static void main(String[] args)
{
useUSB(new UPan());//功能扩展了。
useUSB(new UsbMouse());
} //使用规则。
public static void useUSB(USB u)//接口类型的引用,用于接收(指向)接口的子类对象。//USB u= new UPan();
{
if(u!=null)
{
u.open();
u.close();
}
}
}
//一年后。------------------------------
//实现规则。也就是连接接口 //这些设备和电脑的耦合性降低了。 class UPan implements USB
{
public void open()
{
System.out.println("upan open");
}
public void close()
{
System.out.println("upan close");
} } class UsbMouse implements USB
{
public void open()
{
System.out.println("UsbMouse open");
}
public void close()
{
System.out.println("UsbMouse close");
} } /*
class Mouse
{
} class BookPC
{
public static void main(String[] args)
{
useMouse(new Mouse());
}
public static void useMOuse(Mouse m)
{
m.open();
}
public static void useMOuse(Mouse m)
{
m.open();
}
}
*/

 先暴露接口,使用接口的时候再实现接口,就可以做到功能的扩展。

Java基础十--接口的更多相关文章

  1. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  2. Java基础-面向接口(interface)编程

    Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

  3. 【Java基础】接口和抽象类之间的对比

    Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...

  4. Java基础(十二)--clone()方法

    Clone在Java中就是用来复制对象,通过分配一个和源对象相同大小的内存空间,然后创建一个新的对象,那么他和=的区别在哪? 通过=实现对象拷贝: @Data @NoArgsConstructor @ ...

  5. JAVA基础之接口

    接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...

  6. Java基础10 接口的继承与抽象类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...

  7. java基础(十六)----- equals()与hashCode()方法详解 —— 面试必问

    本文将详解 equals()与hashCode()方法 概述 java.lang.Object类中有两个非常重要的方法: public boolean equals(Object obj) publi ...

  8. Java基础10 接口的继承与抽象类(转载)

    接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface:  interface Cup{ ...

  9. java基础(11):接口、多态

    1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...

随机推荐

  1. win10安装后耳机有声音而外放无声音

    安装win10后耳机声音正常,而外放没声音.检查了小喇叭.播放器和设备管理器一切正常,驱动也重装了好些次.喇叭音量设置.视频音量设置均正常.花费很多时间,结果发现是键盘上有个小喇叭+的键的问题.按fn ...

  2. 020-安装centos6.5后的生命历程

    01.配置网络.修改了ifcfg-eth0文件内容. 1)ifcfg-eth0原来的内容如下: 2)ifcfg-eth0配置后的内容如下:   3)然后重启网络服务: 4)测试网络是否可通: 5)查看 ...

  3. 更换mysql数据库的datadir目录

    更换过程如下: 1.新建指定的datadir目录,这里举例如:E:/mysql_datadir/data. 2.关闭mysql57服务器. 3.将原来的datadir目录下面的所有文件拷贝到E:/my ...

  4. python ( EOL while scanning string literal)

    python错误: EOL while scanning string literal: 这个异常造成的原因是字符串,引号没有成对出现 参考:http://www.jb51.net/article/6 ...

  5. VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)

    前面一节中鸡啄米为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节教程就来初步讲讲怎样为Ribbon Bar添加Ribbon控件. VS2010为Ribbon界面开发提供了Ribbon De ...

  6. AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 3. Data Structures Fundamental Data Structures

    10410 这题说的是给了一棵多叉树的 bfs遍历轨迹 和dfs 遍历 轨迹 在父节点向叶子节点扩展的时候优先遍历编号较小的节点.我还原出这课树特殊判定 根据bfs的顺序来建立这课树,用一个队列安排要 ...

  7. MySQL从删库到跑路_高级(五)——触发器

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.触发器简介 1.触发器简介 触发器是和表关联的特殊的存储过程,可以再插入,删除或修改表中的数据时触发执行,比数据 ...

  8. pandas练习(一)------ 了解数据

    探索Chipotle快餐数据 (相关数据见github) 步骤1 导入pandas库 import pandas as pd 步骤2 导入数据集 path1 = "./data/chipot ...

  9. 统计方法运行时间【Java实现】

    接口Command:定义命令的执行操作 package common; public interface Command { // 运行方法 void run(); } CommandRuntime ...

  10. 调用spark API,监控任务的进度

    我们现在需要监控datapre0这个任务每一次执行的进度,操作如下: 1. 如图所示,打开spark管理页面,找到对应的任务,点击任务名datapre0 2. 进去之后,获得对应IP和端口  3. 访 ...