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

抽象类和接的区别

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

相关推荐
zzzzls~18 小时前
Python 工程化: 用 Copier 打造“自我进化“的项目脚手架
开发语言·python·copier
言慢行善18 小时前
sqlserver模糊查询问题
java·数据库·sqlserver
韶博雅18 小时前
emcc24ai
开发语言·数据库·python
专吃海绵宝宝菠萝屋的派大星18 小时前
使用Dify对接自己开发的mcp
java·服务器·前端
yongui4783419 小时前
C# 与三菱PLC通讯解决方案
开发语言·c#
2501_9333295519 小时前
技术架构深度解析:Infoseek舆情监测系统的全链路设计与GEO时代的技术实践
开发语言·人工智能·分布式·架构
大数据新鸟19 小时前
操作系统之虚拟内存
java·服务器·网络
Tong Z19 小时前
常见的限流算法和实现原理
java·开发语言
凭君语未可19 小时前
Java 中的实现类是什么
java·开发语言
He少年19 小时前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python