java获取u盘-(java获取u盘序列号)

192.168.1.1 次浏览手机阅读
(java获取u盘序列号)

2. 接口

一图流

2.1 界面概念和一些知识点总结

接口(英语:Interface),在JAVA编程语言是抽象类型,是抽象方法的集合,接口通常是interface来声明。一类通过继承接口来继承接口的抽象方法。

接口不是类,写接口的方式和类很相似,但属于不同的概念。类描述对象的属性和方法。接口包含类要实现的方法。

除非实现界面的类是抽象类,否则该类应定义界面中的所有方法。

界面不能实例化,但可以实现。实现接口的类必须实现接口中描述的所有方法,否则必须声明为抽象类。另外,在 Java 在中间,接口类型可以用来声明变量,它们可以成为空指针,或者绑定到接口实现的对象。

2.1.1 接口与类相同

一个接口可以有多个接口

保存接口文件.Java在结尾的文件中,接口名用于文件名

字节码文件保存在接口中.class文件的结尾

接口对应的字节码文件必须在与包名匹配的目录结构中

2.1.2 接口与类的区别

接口不能用于实例对象

接口没有结构方法

接口中的所有方法都必须是抽象的,在Java8之后,可以在接口中使用default关键字修改的非抽象方法

除成员变量外,接口不能包含成员变量static和final变量

接口被类继承的概念准确,准确地说,应该实现被类

接口可以实现我们所说的多继承

2.1.3 接口的一些特点

界面中的每种方法也是隐式抽象的,因此界面中的方法将被隐式指定为public abstract (只可以是public abstract,其他修饰符都会报错)

界面中含有变量,但接口中的变量将被隐式指定为public static final 而且只能是public,用private修饰会报编译错误)

接口中的方法不能在接口中实现,接口中的方法只能通过实现接口中的方法

2.1.4 抽象与界面的区别

在JDK1.8以前,它们有以下区别

抽象方法可以有具体的可执行语句,即方法体,即方法的具体功能,但接口中的方法不好(例如:System.out.println(“I’m super corn!!”);)

抽象成员变量可以是各种类型,接口中的成员变量只能是public static final类型的

接口中不能使用静态代码块和静态方法(使用)static修改方法),抽象类可以有静态代码块和静态方法

一个类只能继承一个抽象类,但是一个类可以实现多个接口

这里要注意的是:

JDK1.8后,界面允许包含静态方法和方法体,包括具体实现方法,我们称之为默认方法default修改关键字

JDK1.9后,允许将方法定义为private,使一些复用代码不会暴露方法

抽象存在的意义是使编译器更好地验证。一般来说,我们不会直接使用抽象类,而是使用它的子类。如果我们不小心通过抽象创建了一个对象,编译器会及时提醒我们。

注:以上内容可以大致浏览,不理解没关系,下面我会一一解释,然后回顾这些知识点会有一种大梦醒来的感觉

现实生活中接口是什么?笔记本上可以USB口、电源插座等

这些接口在实现意义和使用标准上也有所不同

电脑的USB可插口:U盘、鼠标、键盘…所有符合USB协议的设备

在电源插座插孔上,可插:电脑、电视、电饭煲…所有符合规范的设备

通过以上例子,我们可以看到界面是公共行为准则,只要符合标准,就可以通用。在Java接口可以看作是:多类公共规范是一种引用数据类型

2.2 语法规则

界面的定义格式与定义格式基本相同,class关键字换成interface关键字定义了一个接口。

public interface 界名{///抽象方法public abstract void method1();//public abstract是固定搭配,可以不写public void method2();abstract void method3();void method4();//注意:接口中的上述写法都是抽象的,所以method这样写代码就更整洁了


提示 :

创建界面时,接口的命名通常是大写字母I(读ai)开头

接口的命名通常使用形容词词性的单词

阿里编码规范规定,接口中的方法和属性不得添加任何修改符,以保持代码的清洁度

2.3 接口的使用

接口不能直接实例化使用,必须有一个类来实现,接口中所有抽象方法的实现

public class 类名称 implements 接口名称{////////...}


注意 :子类和父类是extends继承关系之间的继承关系implements实现关系。

使用笔记本电脑USB鼠标,USB实现键盘类和接口功能

USB接口:包括打开和关闭设备的功能

笔记本类:包括开关功能,使用USB设备功能

鼠标类:实现USB具有点击功能的接口

键盘类:实现USB接口,并具有输入功能

//USB接口public interface USB{void openDevice();void closeDevice();}//鼠标类,实现USB接口public class Mouse implements USB{@Overridepublic void openDevice(){System.out.println(";打开鼠标");}@Overridepublic void closeDevice(){System.out.println(";关掉鼠标");}public void click(){System.out.println(";点击鼠标";实现USB接口public class KeyBoard implements USB{@Overridepublic void openDevice(){System.out.println(";打开键盘");}@Overridepublic void closeDevice(){System.out.println(";关闭键盘");}public void inPut(){System.out.println(";键盘输入";USB设备public class Computer ublic void powerOn(){System.out.println(";打开笔记本电脑;");}public void powerOff(){System.out.println(";关闭笔记本电脑;");}public void useDevice(USB usb){usb.openDevice();if(usb instanceof Mouse){Mouse mouse = (Mouse)usb;mouse.click();}else if(usb instanceof KeyBoard){KeyBoard keyBoard = (KeyBoard)usb;keyBoard.inPut();}usb.closeDevice()}//测试类:public class TestUSB ublic static void main(String[]args){Computer computer = new Computer();computer.powerOn()//使用鼠标设备computer.useDevice(new Mouse();//使用键盘设备;computer.useDevice(new KeyBoard());computer.powerOff();}}


输出:

2.3.1 instanceof

在上述代码示例中,提到了instanceof,有些朋友可能不太明白。我在之前的博客上介绍过。在这里再给你解释一下

instanceof是Java一个保留关键字,左边是对象,右边是类,返回类型是Boolean类型。

它的具体功能是测试左边的对象是否是由右边或右边的子类创建的实例对象

如果是,返回true,否则返回false

【instanceof使用注意事项

现有继承关系,再有instanceof使用(包括实现接口)

【instanceof应用场景】

当需要转换对象的强制类型时,需要使用instanceof进行判断

2.4 接口的特性

接口类型是引用类型,但不能直接new接口的对象

public class TestUSB ublic static void main(String[]args){USB usb = new USB()}}/编译会出错:USB是抽象的,无法实例化

接口中的每一种方法都是public抽象法,即接口中的方法将被隐式指定为public abstract(只能是public abstract,其他修饰符都会报错)

public interface USB{//编译错误:此处不允许使用修饰符private//或者是java: 缺乏方法主体, 或声明抽象private void openDevice();void closeDevice();//不同JDK版本编译器的标准不同,错误报告也不同}


界面中的方法不能在界面中实现,只能通过实现接口类来实现

public interface USB{void openDevice()///编译失败:因为接口中的方法默认为抽象方法///Error:接口抽象法不能带主体}

但是如果我们在这里加一个,default,然后方法体就可以实现了。

重写界面中的方法时,不能使用default修改访问权限

public interface USB{void openDevice();//默认为publicvoid closeDevice();//默认为public}public class Mouse implements USB{@Overridevoid openDevice(){System.out.println(";打开鼠标";...}///编译会在这里报错,重写USB中的openDevice默认修饰符不能用于方法

实现此接口,重写此接口方法的访问限制修改符的范围大于接口

界面可以含有变量,但编译器将自动隐式指定接口中的变量public static final变量

public interfaceUS







电脑











电脑电脑





























































































电脑
喜欢 ()