abstract class AbsDemo
{
abstract void show1();
abstract void show2();
}

当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示-----接口  interface

定义接口使用的关键字不是class,是interface。

对于接口当中常见的成员:而且这些成员都有固定的修饰符
1. 全局常量:public static final
2. 抽象方法:public abstract

由此得出结论,接口中的成员都是公共的权限。

interface Demo
{
public static final int NUM = 4;
public abstract void show1();
public abstract void show2();
}

如果接口中不写固定修饰符,如下:

interface Demo
{
int NUM = 4;
void show1();
void show2();
}

编译的时候就会自动给你加上,所以这样写也是可以的。
但是不推荐这样写,影响阅读性。

实现implements

interface Demo
{
public static final int NUM = 4;
public abstract void show1();
public abstract void show2();
}

类与类之间是继承关系,类与接口之间是实现关系。

接口不可以实例化。
只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。
否则,这个子类就是一个抽象类。

class DemoImpl implements /*实现*/ Demo
{
public void show1()
{}
public void show2()
{}
} class InterfaceDemo
{
public static void main(String[] args)
{
DemoImpl d = new DemoImpl();
System.out.println(d.NUM);
System.out.println(DemoImpl.NUM);
System.out.println(Demo.NUM);
//这3中输出方法都可以
}
}

多实现

在java中不直接支持多继承,因为会出现调用的不确定性。
所以java将多继承机制进行改良,在java中变成了多实现。

一个类可以实现多个接口。

interface A
{
public abstract void show();
} interface Z
{
public abstract void show();
} class Test implements A,Z //多实现
{
public void show()//把上面两个show方法都覆盖了.
{
}
}

一类在继承另一个类的同时,还可以实现多个接口。

class Q
{
public void method()
{}
}
class Test2 extends Q implements A,Z
{
}
//接口的出现避免了单继承的局限性 class InterfaceDemo
{
public static void main(String[] args)
{
Test t = new Test();
t.show();
}
}
interface CC
{
void show();
}
interface MM
{
void method();
} interface QQ extends CC,MM //接口与接口之间是继承关系,可以多继承,因为没有方法体
{
}

笔记本电脑使用
为了扩展笔记本的功能,但日后出现什么功能设备不知道。
就定义一个规则,只要日后出现的设备都符合这个规则就可以了。
规则在java中就是接口。

interface USB//暴漏的规则
{
public void open();
public void close();
}
class BookPC
{
public static void main(String[] args)
{
//useMouse(null);
useUSB(new Upan()); //一年后 功能扩展
//接口类型的引用,用于接收(指向)接口的子类对象.
useUSB(new UsbMouse());
} //使用规则
public static void useUSB(USB u)
{
u.open();
u.close();
}
}
//一年后,买了一个U盘
//实现规则
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");
}
}

Java学习个人备忘录之接口的更多相关文章

  1. Java学习笔记之---比较接口与抽象类

    Java学习笔记之---比较接口与抽象类 抽象类是描述事物的本质,接口是描述事物的功能 接口与抽象类的异同 1.一个类只能继承一个父类,但是可以有多个接口 2.抽象类中的抽象方法没有方法体,但是可以有 ...

  2. 【Java学习笔记】Map接口的子接口---TreeMap

    TreeMap,与TreeSet类似,可以对集合中的元素进行排序,同时保持元素的唯一性. 应注意,Comparable(实现接口,记得覆盖comparaTo方法),Comparator的使用. imp ...

  3. Java学习笔记——继承、接口、多态

    浮点数的运算需要注意的问题: BigDecimal operand1 = new BigDecimal("1.0"); BigDecimal operand2 = new BigD ...

  4. Java学习个人备忘录之多线程

    进程:正在进行中的程序(直译). 线程:就是进程中一个负责程序执行的控制单元(执行路径) 一个进程中可以有多个执行路径,称之为多线程. 一个进程中至少要有一个线程. 开启多个线程是为了同时运行多部分代 ...

  5. java学习笔记——Collection集合接口

    NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...

  6. Java学习:常用函数接口

    常用函数接口 什么是函数式接口? 函数式接口,@FunctionalInterface,简称FI,简单的说,FI就是指仅含有一个抽象方法的接口,以@Functionalnterface标注 注意:这里 ...

  7. Java学习个人备忘录之入门基础

    临时配置环境方式:查看path下的环境变量 set path修改path下的环境变量 set path=haha删除path下的环境变量 set path=查看当前java的版本 javac -ver ...

  8. Java学习笔记-抽象类与接口

    抽象类用于在类中不用具体实现,而在子类中去实现的类 抽象类 抽象类概述 抽象定义:抽象就是从多个事物中将共性的,本质的内容抽取出来 抽象类:Java中可以定义没有方法体的方法,该方法的具体实现由子类完 ...

  9. Java学习笔记(十)面向对象---接口

    理解 初期理解 可以认为接口是一个特殊的抽象类.当接口中的方法都是抽象的,那么该类可以通过接口的形式来表示. class用于定义类 interface用于定义接口 格式特点 接口中常见定义:常量,抽象 ...

随机推荐

  1. jdk11新特性

    JDK 11主要特性一览 jdk11即将在9月25号发布正式版.确定的新特性包括以下17个 181 嵌套类可见性控制 309 动态文件常量 315 改进 Aarch64 Intrinsics 318 ...

  2. PHP在foreach中对$value赋值

    foreach ($data as $key => $value) { $data[$key]['name'] = '测试在value中赋值';}

  3. C# IL DASM 使用-破解c#软件方法

    IL DASM反编译工具 使用C#的猿人或多或少都会对微软的IL反编译工具(ildasm.exe)有所认识.我最早接触到这工具是公司同事使用他反编译exe程序,进行研读和修改.感觉他还是很强大. IL ...

  4. 搭建Jupyter Notebook服务器

    昨天发了Jupyter的使用,补一篇Jupyter服务器的搭建~ 一.搭建Jupyter 1.安装 使用virtualenv建虚拟环境.在虚拟环境中安装jupyter.matplotlib等等需要的库 ...

  5. PAT A1060 (Advanced Level) Practice

    If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered ...

  6. (杭电 1014)Uniform Generator

    Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...

  7. Qt udp 主机和虚拟机无法互相广播

    描述: 主机和虚拟机可以ping通,port没被占用,虚拟机可以向主机广播,但是主机不能向虚拟机广播 原因: 虚拟机只配置了一个适配器,而主机有多个适配器,当虚拟机广播时,只能使用和主机连接的适配器, ...

  8. 使用JAX-WS(JWS)发布WebService(二)

    将项目改为maven工程,并发布到Tomcat: WebService常用到的注解以及作用: 发布过程中遇到的问题总结: 一.将项目改为maven工程,并发布到Tomcat: 继续上一篇,将代码完善成 ...

  9. BZOJ1588_营业额统计_KEY

    题目传送门 分析题意可得,希望求与每个数最相近的数. 二叉搜索树的简单题,因为可能被卡成O(N),考虑平衡树. 因为Treap较简单,此处用Treap编写代码. code: #include < ...

  10. 北京Uber优步司机奖励政策(3月11日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...