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

抽象类和接的区别

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

相关推荐
用户3721574261353 分钟前
Java 如何插入和删除 Excel 行和列
java
@SmartSi5 分钟前
AgentScope Java 入门:如何使用 OpenAIChatModel 集成兼容 OpenAI 协议模型
java·agentscope
高林雨露5 分钟前
kotlin 相关code
开发语言·kotlin
我还记得那天9 分钟前
函数的递归调用
c语言·开发语言·visualstudio
zhangfeng11339 分钟前
ThinkPHP5 事件系统的标准最佳实践 事件系统的完整设计逻辑tags.php tags.php(事件地图)
android·开发语言·php
xyq202413 分钟前
HTML 标签简写及全称
开发语言
tongluowan00714 分钟前
数据结构 Bitmap(位图)示例 - 用户签到系统
开发语言·数据结构·bitmap·用户签到系统
就叫_这个吧14 分钟前
Java线程池应用的四种方式+线程池底层实现原理
java·开发语言
Dicky-_-zhang16 分钟前
Java并发编程实战:线程池与并发工具类
java·jvm
Rust研习社16 分钟前
Rust 官方拟定 LLM 政策,防止 LLM 污染开源社区?
开发语言·后端·ai·rust·开源