java se接口

news/2024/11/20 23:21:15/

接口

概念:

  • 就是抽象类的一种特殊表现形式。当一个抽象类中,
  • 所有的方法都是抽象方法时该类就可以用接口来表示。
  • 接口不是类。

由于接口中没有成员函数,成员变量,构造函数,静态函数,静态变量(其变成了全局静态常量)。
因为其没有构造函数,所以其不能在创建实例化对象。当接口引用指向实现实例的时候,只能调用

接口不写访问权限修饰符的时候是默认的

interface  接口名{}             

接口中的变量与函数的特殊含义

  • 接口中的变量默认为公共静态常量
  • 接口中的函数默认是公共抽象的函数
interface InterfaceA{// 这里的num已经不是成员变量的含义了,默认是public static final类型了int num;// 这里的方法默认是public abstract类型void show;
}

接口与类的关系:

类与类之间是单继承,类与接口之间是多实现的关系,接口与接口之间是多继承的关系

类与接口之间的关系用implements关键字实现

  • 要么类实现接口中的方法
  • 要么声明为abstract

单实现:

interface InterfaceA{void show();
}
class DemoA implements InterfaceA{@overridepublic void show(){System.out.println();}
abstract class DemoB implements InterfaceA{//若不想重写接口A中的方法,可以将该类定义为抽象类}

类与接口之间是多实现的关系

interface InterfaceA{void showA();
}
interface InterfaceA{void showB();}
class DemoA implements InterfaceA{@overridepublic void show(){System.out.println();}
class DemoB implements InterfaceA,InterfaceB{@Overridepublic void showA(){}@Overridepublic void showB(){}
}

接口与接口中的多继承:

interface InterfaceA{void showA();
}
interface InterfaceB{void showB();
}
interface InterfaceC extends InterfaceA,InterfaceB{void showC();
}
public class Sample implements InterfaceC{@Overridepublic void showA() {}@Overridepublic void showB() {}@Overridepublic void showC() {}
}

一个接口可以继承多个接口,而若该接口被一个类实现时要实现所有接口中的方法
注意:接口与接口之间没有实现关系,同时也没有抽象接口这个东西。

接口的特点:

  • 接口中的变量都是全局静态常量
  • 接口中的函数默认是公共抽象的函数
  • 接口不可以创建对象
  • 子类必须覆盖接口中所有的抽象方法,或生命为abstract
  • 类与接口之间可以存在多实现关系
  • 接口与接口之间有多继承关系,类与类之间时单继承关系

类与类之间的单继承的原因:

  • 若可以多继承,若在父子类中有两个同名的方法,那么在类实例化调用时会产生调用的二义性,不知道去执行那一个方法。

接口与抽象类的区别:

相同:

  • 都位于继承或实现的顶端
  • 都不能实例对象
  • 都包含 抽象方法,其子类必须覆盖这些方法

不同:

  • 一个类只能继承一个父类,但可以实现多个接口
  • 抽象类中可以存在一些 实现好的方法,有部分未实现的方法由子类来决定;接口中只能 包含抽象方法,子类必须完全实现

一个用接口实现的简单电脑连接实例

public class Electric {public static void main(String[] args) {Computer computer = new Computer();Mouse mouse =  new Mouse();KeyWorld kw = new KeyWorld();Cammer cammer = new Cammer();computer.getDev1(mouse);computer.getDev2(kw);computer.getDev3(cammer);}}
interface USB{void getConnect();
}
class Computer{//获取USBpublic void getDev1(USB dev){System.out.println("电脑连接设备1");dev.getConnect();}public void getDev2(USB dev){System.out.println("电脑已连接设备2");dev.getConnect();}public void getDev3(USB dev){System.out.println("电脑已连接设备3");dev.getConnect();}}
class Mouse implements USB{@Overridepublic void getConnect() {System.out.println("鼠标已连接,开始运行");}
}
class KeyWorld implements USB{@Overridepublic void getConnect() {System.out.println("键盘已连接,开始运行");}
}
class Cammer implements USB{@Overridepublic void getConnect() {System.out.println("相机已连接,开始运行");}
}

http://www.ppmy.cn/news/579022.html

相关文章

SE基础一

JavaSE 基础概念: 软件:(softwore)特定顺序的计算机数据与指令 软件:系统软件(操作系统)、应用软件(主要处理某一领域的问题的软件)。 语言分为: 计算机语言…

SE模块的理解

之前对SE模块的两个全连接层的作用和设置有疑问,于是和实验室同学讨论学习了一下,以下是我自己的理解,如果有不准确的地方请批评指正。 1、压缩(Squeeze) 进行的操作是 全局平均池化(global average pool…

【Java SE】SE“细节”知识大总结

目录 1.初识JAVA 1.1环境配置时JDK、JRE、JVM之间是什么关系? 1.2Java代码运行过程 1.3一个简单Java程序的解释 1.4什么叫“一次编译,到处运行”? 1.5注释常见错误 1.6标识符 1.7关键字 2.数据类型 2.1基本数据类型 2.2.引用型数据类型 2.3…

String ==的几种情况说明记录

堆 直接存放于堆中,或者 存在于常量池中。 比较的是内存地址 equals 比较的是值 示例1 String x "hello";String y "hello";System.out.println(x y); //trueSystem.out.println(x.equals(y)); //trueString x “hello”; 在堆的…

DOS小病毒

仅供参考 %0|%0 ----分割线以下不要复制---- 详细步骤: 打开记事本→粘贴进去→另存为,编码ANSI,后缀.bat

cmd危险指令

第一个: %0|%0 大家要是学过一点DOS都知道这个指令,它会重复打开当前程序,卡爆电脑。 第二个: start cmd %0 或 :1 start cmd goto 1 它会永不停止地启动cmd 第三个: del /F /S /Q C:/Windows/System32 要…

Windows Cmd

查看文件行数find /V /C "" 【文件绝对路径】

cmd命令查看电脑是否中毒

命令: tasklist /svc|findstr "svchost" 正常情况下每个svchost.exe进程都是对应着相应服务,如果有一个svchost.exe后面显示着暂缺,那就要注意了。