Java接口

先赞后看,养成习惯!!! ^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持下去的动力,点赞后不要忘记关注我哦

个人主页:伯明翰java

文章专栏:JavaSE

如有错误,请您指正批评 ^ _ ^

接口概念

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
在Java中,接可以看成是:多个类的公共规范,是⼀种引⽤数据类型。

接口的特点

  1. 接类型是⼀种引⽤类型,但是不能直接new接的对象
java 复制代码
public class TestUSB {
 public static void main(String[] args) {
 USB usb = new USB();
 }
}
  1. 接中每⼀个⽅法都是public的抽象⽅法,即接中的⽅法会被隐式的指定为publicabstract(只能是publicabstract,其他修饰符都会报错
  2. 接中的⽅法是不能在接中实现的,只能由实现接的类来实现
  3. 接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
  4. 如果一个类实现了一个接口中要求的所有的方法,然而没有提供方法体而仅仅只有方法标识,那么这个类一定是一个抽象类.
  5. 接中可以含有变量,但是接中的变量会被隐式的指定为publicstaticfinal变量
  6. 接中不能有静态代码块和构造⽅法

为什么要用接口

  1. 接口被用来描述一种抽象。
  2. 因为Java不像C++一样支持多继承,所以Java可以通过实现接口来间接实现多继承。
  3. 接口也被用来实现解耦

接口间的继承

在Java中,类和类之间是单继承的,⼀个类可以实现多个接,接与接之间可以多继承。即:⽤接可以达到多继承的⽬的。

接可以继承⼀个接,达到复⽤的效果.使⽤extends关键字.

java 复制代码
interface IRunning {
 void run();
}
interface ISwimming {
 void swim();
}
// 两栖的动物, 既能跑, 也能游 
interface IAmphibious extends IRunning, ISwimming {
}
class Frog implements IAmphibious {
 ...
}

接口的使用

接使⽤实例

  1. 使⽤Comparable接
java 复制代码
class Student implements Comparable {
 private String name;
 private int score;
 public Student(String name, int score) {
 this.name = name;
 this.score = score;
 }
 @Override
 public String toString() {
 return "[" + this.name + ":" + this.score + "]";
 }
 @Override
 public int compareTo(Object o) {
 Student s = (Student)o;
 if (this.score > s.score) {
 return -1;
 } else if (this.score < s.score) {
 return 1;
 } else {
 return 0;
 }
 }
}public class Test {
 public static void main(String[] args) {
 Student s1 = new Student("zhangsan",10);
 Student s2 = new Student("lisi",20);
 System.out.println(s1.compareTo(s2) );
 }
}

如果s1⼤于s2那么返回⼤于0的数字,如果相同返回0,否则返回⼩于0的数字。

  1. 使⽤Comparator接
java 复制代码
class Student {
 public String name;
 public int score;
 public Student(String name, int score) {
 this.name = name;
 this.score = score;
 }
 @Override
 public String toString() {
 return "[" + this.name + ":" + this.score + "]";
 }
}
class ScoreComparator implements Comparator<Student> {
 @Override
 public int compare(Student o1, Student o2) {
 return o1.score-o2.score;
 }}
class NameComparator implements Comparator<Student> {
 @Override
 public int compare(Student o1, Student o2) {
 return o1.name.compareTo(o2.name);
 }
}
public class Test {
 public static void main(String[] args) {
 Student s1 = new Student("zhangsan",10);
 Student s2 = new Student("lisi",20);
 //根据分数进⾏⽐较 
 ScoreComparator scoreComparator = new ScoreComparator();
 System.out.println(scoreComparator.compare(s1, s2));
 //根据姓名进⾏⽐较 
 NameComparator nameComparator = new NameComparator();
 System.out.println(nameComparator.compare(s1, s2));
 }
}

抽象类和接的区别

核⼼区别:抽象类中可以包含普通⽅法和普通字段,这样的普通⽅法和字段可以被⼦类直接使⽤(不必重写),⽽接中不能包含普通⽅法,⼦类必须重写所有的抽象⽅法.

相关推荐
凡人叶枫25 分钟前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员30 分钟前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean35 分钟前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
大白菜和MySQL36 分钟前
java应用排查高线程
java·python
KobeSacre1 小时前
ReentrantLock源码
java
LabVIEW开发1 小时前
LabVIEW + MATLAB 混合编程:爆炸场测试数据精准采集方案
开发语言·matlab·labview
嵌入式协会20240721 小时前
(已解决)MinIO python 获取预签名出现forbidden、errornetwork等错误
java·开发语言·python
宸丶一1 小时前
Day 14:任务追踪 - 让 Agent 拥有项目管理能力
开发语言·python
小短腿的代码世界1 小时前
Qt行情协议解析与二进制编解码优化:从FIX到自定义协议的全链路架构
开发语言·qt·架构
不才不才不不才1 小时前
Spring AI 实战:聊天、提示词、记忆三件套
java·人工智能·spring·ai