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

抽象类和接的区别

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

相关推荐
Shaoshing4 分钟前
消息类型
java
2301_32241428049 分钟前
springboot学生课堂出勤统计系统15835-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·mysql·随机森林·微信小程序·uni-app·微信开发者工具·推荐算法
程序员夏洛1 小时前
VMware Workstation Pro 卸载失败:安装向导提前结束、错误 1603 的排查与解决
java
User_芊芊君子1 小时前
【JavaEE初阶 - 网络原理】网络分几层?从自定义协议聊到 DNS
java·网络·java-ee
白帽攻防录8 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
聚美智数8 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛8 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓9 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
2603_965148119 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
土豆.exe9 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存