接口

接口是对方法的封装,它不是类,但也会编译为.class文件。接口的关键字是interface,定义方式与类相似,是一种引用数据类型。接口不能创建对象,但可以被类使用(implements,类似于继承),一个实现接口的类中,要实现接口所有的抽象方法,否则就是一个抽象类了。

public interface 接口名称 {

// 抽象方法

// 默认方法

// 静态方法

// 私有方法

}抽象方法

public interface InterFaceName {

public abstract void method();

}

使用abstract修饰的抽象方法,供子类实现使用。默认方法

使用 default 修饰,不可省略,供子类调用或者子类重写。

public interface InterFaceName {

public default void method() {

// 执行语句

}

}静态方法

使用 static 修饰,供接口直接调用,接口名.方法名()的方式直接调用,不能被子类实现。

public interface InterFaceName {

public static void method2() {

// 执行语句

}

}私有方法

使用 private 修饰,供接口中的默认方法或者静态方法调用。

public interface InterFaceName {

private void method() {

// 执行语句

}

}类与接口的关系

类与接口的关系为实现关系,即类实现接口,用implements关键字。非抽象子类实现接口,必须重写接口的所有抽象方法,而默认方法可以直接调用,也可以重写。

class 类名 implements 接口名 {

// 重写接口中抽象方法【必须】

// 重写接口中默认方法【可选】

}私有方法的使用

私有方法:只有默认方法可以调用。

私有静态方法:默认方法和静态方法可以调用。接口的多实现

接口与继承不同,是可以多实现的。就是一个类可以实现多个接口。

class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... {

// 重写接口中抽象方法【必须】 // 重写接口中默认方法【不重名时可选】}

当实现多个接口时,对于抽象方法,必须全部重写,如果抽象方法重名,只需重写一次即可。这是因为重写是对方法的覆盖,以最新的为准。

对于默认方法,实现类都可以使用,如果有重名,必须重写一次,因为不重写会混乱。

注意,默认方法有个优先级问题,如果默认方法与实现类的父类成员方法重名,会以父类的成员方法为较高优先级。

对于静态方法,类不能实现静态方法,所以即使重名也不受影响。接口也可以继承

接口是可以实现继承的,也是用extends关键字,不过接口可以实现多继承,当然,接口只能继承接口,类型要保持一致。接口注意事项

-接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用 public static final修饰。

-接口中,没有构造方法,不能创建对象。

-接口中,没有静态代码块。

接口实现案例案例需求

笔记本电脑( laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,

但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。

定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守

USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。案例分析

-USB接口,包含开启和关闭功能;

-笔记本类,包含运行、关机功能,使用usb设备功能;

-鼠标类,实现usb接口,具备点击方法

-键盘类,实现USB接口,具备敲击方法案例实现

-定义USB接口

interface USB{

void open();

void close();

}

-定义鼠标类

class Mouse implements USB{

public void open(){

System.out.println("鼠标开启");

}

public void close(){

System.out.println("鼠标关闭");

}

public void click(){

System.out.println("鼠标单机");

}

}

-定义键盘类

class KeyBoard implements USB{

public void open(){

System.out.println("键盘开启");

}

public void close(){

System.out.println("键盘关闭");

}

public void type(){

System.out.println("键盘敲击");

}

}

-定义笔记本类

class Laptop{

public void run(){

System.out.println("笔记本运行");

}

public void useUSB(USB usb){

if(usb != null){

usb.open();

if(usb instanceof Mouse){

Mouse m = (Mouse) usb;

m.click();

}else if (usb instanceof KeyBoard){

KeyBoard kb = (KeyBoard)usb;

kb.type();

}

usb.close();

}

}

public void shutDown(){

System.out.println("笔记本关闭");

}

}

-编写测试类

public class Test{

public static void main(String[] args){

Labtop lt = new Laptop();

lt.run();

USB u1 = new Mouse();

lt.useUSB(u1);

USB u2 = new KeyBoard();

lt.useUSB(u2);

lt.shutDown();

}

}

这里以多态的方式实现对usb设备的创建,类型都是接口类型的usb,因为接口也是一种引用类型,这是符合规定的,并不是接口生成了对象,而是接口类型变量,指向了Mouse和KeyBoard对象,在调用笔记本对象的方法,判断二者对应设备类型,并做对应操作。

这个示例是接口与多态的实操案例。

java接口示例_【基础篇】java-接口及其示例相关推荐

  1. java peek函数_基础篇:JAVA.Stream函数,优雅的数据流操作

    写在开头:本文是转载于掘金上的一篇文章,已获得原作者授权,我会在文章最后放上原作者和原文链接. 前言 平时操作集合数据,我们一般都是for或者iterator去遍历,不是很好看.java提供了Stre ...

  2. java 反射机制_基础篇:深入解析JAVA反射机制

    反射的概念 java 的放射机制:在程序运行时,程序有能力获取一个类的所有方法和属性:并且对于任意一个对象,可以调用它的任意方法或者获取其属性 通俗解析:java 文件需要编译成. class 文件才 ...

  3. Java修炼之路——基础篇——Java集合类详解2

    Set和List区别?Set如何保证元素不重复? Set.List都实现了Collection接口,List是有序的列表,Set是无序的集合(TreeSet有序) List实现类: ArrayList ...

  4. Java修炼之路——基础篇——Java集合类详解1

    SynchronizedList和Vector的区别 java.util.Vector java.util.Collections.$SynchronizedList Vector用同步方法,Sync ...

  5. Java修炼之路——基础篇——Java关键字

    1:transient 当对象被序列化时,transient阻止其修饰的对象进行序列化:当反序列化时,此对象的值不会被恢复. 2:instanceof 判断引用指向的对象,是不是某个类及其子类的实例对 ...

  6. Java综合知识总结_基础篇

    Java 一.JDK常用的包 java.lang: 这个是系统的基础类,比如String.Math.Integer.System和Thread, 提供常用功能. java.io: 这里面是所有输入输出 ...

  7. java语言程序设计基础篇课后答案_《Java语言程序设计:基础篇》课后复习题答案-第十五章.pdf...

    <Java语言程序设计:基础篇>课后复习题答案-第十五章 Chapter15Graphics 1. Theycoordinateshouldincreaseandthexcoordinat ...

  8. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

  9. java综合知识点总结基础篇

    一.JDK常用的包 java.lang: 这个是系统的基础类,比如String.Math.Integer.System和Thread,提供常用功能. java.io: 这里面是所有输入输出有关的类,比 ...

  10. Java学习---Day16_IO流基础篇

    Java学习-Day16_IO流基础篇 文件操作 操作磁盘上的某一个文件或某一个文件夹,可以对他们进行创建或删除.移动.属性获取.属性设置等操作.但是,不包含读取文件的内容.拷贝文件 ps:java中 ...

最新文章

  1. regexp 好汉字符串_如何在JavaScript中使用RegExp确认字符串的结尾
  2. 《系统集成项目管理工程师》必背100个知识点-99云计算
  3. Linux下VTK、ITK的安装及运行 转载
  4. 数据不够,怎么训练数据集?别怕,有TA
  5. laravel 跨域解决方案
  6. python爬虫从入门到放弃-python爬虫从入门到放弃(七)之 PyQuery库的使用
  7. Qt 有关ffmpeg的配置
  8. memcached+magent实现负载
  9. 多继承完美闪避成员名冲突的问题
  10. html5视频播放器 二 (功能实现及播放优化)
  11. cudnn下载与安装
  12. Mysql面试题(100+)
  13. 丹佛机场行李系统处理方案
  14. 编译android版本protobuf
  15. 有道获取单词读音api
  16. Android 10.0锁屏界面默认不显示Notification通知
  17. 什么是SCRM 客户scrm管理系统 - whale 帷幄
  18. 项目OA之资源结构图
  19. 计算机网络(一)——计算机网络基础
  20. Android webm转mp4,Android中直接播放webm的视频an – 手机爱问

热门文章

  1. 论文笔记:Matrix Completion in the Unit Hypercube via Structured Matrix Factorization
  2. 机器学习笔记 时间序列预测(基本数据处理,Box-Cox)
  3. Karp 21个规约问题 笔记 (1~13个规约问题)
  4. pytorch笔记: 搭建Skip—gram
  5. 深入Java单例模式
  6. Python 模块学习:os模块
  7. python 拓扑排序 dfs bfs_拓扑排序的DFS和BFS
  8. stylecloud.gen_stylecloud() 参数详解
  9. Python编程基础:第三十七节 石头剪刀布游戏Rock, Paper, Scissors Game
  10. 普通程序员如何转向AI方向