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));
 }
}

抽象类和接的区别

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

相关推荐
ALex_zry28 分钟前
C++26 std::complex 结构化绑定详解:auto [re, im] = c
c语言·开发语言·c++
shushangyun_1 小时前
2026智能采购商城系统选型指南:如何引领企业数字化采购升级
java·大数据·数据库·人工智能·机器学习
她说..1 小时前
Java 默认值设置方式
java·开发语言·后端·springboot
忧郁的紫菜2 小时前
基础实现:单篇 Markdown 转 Word
开发语言·c#·word
甜美的小天鹅2 小时前
Swifter C#之inline还是不inline,这是个问题
开发语言·c#
学渣超2 小时前
记一次分布式事务数据不一致的排查之旅:从超时到索引,层层剥茧
java·后端·架构
小短腿的代码世界2 小时前
Qt Bluetooth源码深度解析:从HCI协议到跨平台API的完整架构
开发语言·qt·架构
掉鱼的猫2 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·llm·aigc
带刺的坐椅2 小时前
Agent Harness 实战指南:构建生产级 AI Agent 的"马具"框架
java·ai·llm·agent·solon-ai
c238562 小时前
互斥锁高频面试题全解:从基础概念到底层实现,一文通关
java·c++·面试·职场和发展