🛰️🛰️五、实现多个接口

简介: 🛰️🛰️五、实现多个接口

在Java中,类和类之间是单继承的,一个类只能有一个父类,即Java中不支持多继承,但是一个类可以实现多个接口。

   interface Idemo1 {

       public abstract void way1();

   }

   interface Idemo2{

       void way2();

   }

   class test1 implements Idemo1,Idemo2{

       @Override

       public void way1() {

           System.out.println("实现了第一个接口Idemo1");

       }

   

       @Override

       public void way2() {

           System.out.println("实现了第二个接口Idemo2");

       }

   }

   🍱🍱这样写代码的好处就是典型的面向对象思想的编程,对比我们的继承思想,继承表达的含义是 is - a 语义, 而接口表达的含义是 具有 xxx 特性 。这样设计有什么好处呢? 时刻牢记多态的好处, 让程序员忘记类型. 有了接口之后, 类的使用者就不必关注具体类型,而只关注某个类是否具备某种能力。

🛩️🛩️六、接口间的继承

在Java中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继承。即:用接口可以达到多继承的目的。

这里我们就定义了接口Idemo3继承了接口Idemo1和接口Idemo2。

   interface Idemo1 {

       public abstract void way1();

   }

   interface Idemo2{

       void way2();

   }

   interface Idemo3 extends Idemo1,Idemo2{

   

   }

🚞🚞七、 接口使用实例

   我们知道,在我们之前的学习过程中,我们知道整数通过大小来比较,字符串比较首字母的大小顺序,那么我们定义一个学生类,这个学生类有两个属性age和name,把他们放在一起,按照我们之前的理解,idea自带的比较方法Arrays.sort()能否实现比较呢?那么又是根据什么来比较的呢?是姓名还是年龄呢?🍶🍶

   class Student {

       public String name;

       public int age;

   

       public Student(String name, int age) {

           this.name = name;

           this.age = age;

       }

   

       @Override

       public String toString() {

           return "Student{" +

                   "name='" + name + '\'' +

                   ", age=" + age +

                   '}';

       }

   }

🍶再定义一个学生数组,对这个对象数组中的元素进行排序。

   public class Test1 {

       public static void main(String[] args) {

          Student[] stu  = new Student[3];

          stu[0] = new Student("xiaohu",18);

          stu[1] = new Student("zhangsan",19);

          stu[2] = new Student("xiaoming",20);

          Arrays.sort(stu);

           System.out.println(Arrays.toString(stu));

       }

   }

6c4766143dcc4af3b3f7618d00aa2bc7.png

🍰🍰解决方案;

让我们的 Student 类实现 Comparable 接口, 并实现其中的 compareTo 方法。

🍣步骤1:首先我们需要实现 Comparable 接口,注意书写格式,Comparable<类名>。

d1108625dfa8423eba032d3ba36a1cf6.png

🍜2.写完之后我们发现编译器还是报错,我们可以在报错的地方鼠标右键。

372e3a077c2241378d646ef1a999dd69.png

🍋3.根据提示操作

c2826963d7a54a03a6ede3418d511a9d.png

🍌4.点击这里。

ff92d3269714427db35d53ccdf03dc46.png

结果:我们可以看到系统自动生成了compare To方法。

432be1aec8b5443a87c0b76bf9d0fee7.png    🍞🍞那么生成了这个方法,我们就可以来设计比较的根据,比如这里我们想让学生类通过他们的年龄来比较,我们可以在compareTo 方法里实现我们的想法:

   @Override

       public int compareTo(Student o){//在这个接口中实现compare To 方法

           if(this.age - o.age > 0){

               return 1;

           }else if(this.age - o.age < 0){

               return -1;

           }

           else{

               return 0;

           }

   

       }

运行结果:


bec990b1d0604c66800c5421deb54959.png

即我们如果想比较,必须要指定我们的比较根据,比如年龄或者姓名,通过compareTo 方法就很好的实现了我们的功能。

🚎🚎八、抽象类和接口的区别

   🍏🍏1:成员区别

   抽象类:

   构造方法:有构造方法,用于子类实例化使用。

   成员变量:可以是变量,也可以是常量。

   成员方法:可以是抽象的,也可以是非抽象的。

   接口:

   构造方法:没有构造方法。

   成员变量:只能是常量。默认修饰符:public static final。

   成员方法:jdk1.7只能是抽象的。默认修饰符:public abstract 。

   jdk1.8可以写以default和static开头的具体方法。

   🍊🍊2:类和接口的关系区别

   类与类:

   继承关系,只能单继承。可以多层继承。

   类与接口:

   实现关系,可以单实现,也可以多实现。

   类还可以在继承一个类的同时实现多个接口。

   接口与接口:

   继承关系,可以单继承,也可以多继承。

   🍅🍅3:体现的理念不同

   抽象类里面定义的都是一个继承体系中的共性内容。

   接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。

   

相关文章
|
存储 算法 Shell
哈希表、哈希桶(C++实现)【STL】
哈希表、哈希桶(C++实现)【STL】
340 0
|
SQL 运维 Java
HBASE启动脚本/Shell解析
常用到的HBase启动脚本有: 1.$HBASE_HOME/bin/start-hbase.sh 启动整个集群 2.$HBASE_HOME/bin/stop-hbase.sh 停止整个集群 3.$HBASE_HOME/bin/hbase-daemons.sh 启动或停止,所有的regionserver或zookeeper或backup-master 4.$HBASE_HOME/bin/hbase-daemon.sh 启动或停止,单个master或regionserver或zookeeper 以start-hbase.sh为起点,可以看看脚本间的一些调用关系
973 0
|
JSON 物联网 开发工具
设备接入组件功能介绍
设备接入组件功能介绍
597 0
遥感原理与应用:常用波段及其特性、太阳辐射衰减原因、大气窗口及其分布是什么?
遥感原理与应用:常用波段及其特性、太阳辐射衰减原因、大气窗口及其分布是什么?
772 0
遥感原理与应用:常用波段及其特性、太阳辐射衰减原因、大气窗口及其分布是什么?
|
存储 机器学习/深度学习 数据挖掘
利用 Python 中的地理空间数据与 GeoPandas
空间数据由与位置关联的记录组成。这些数据可以来自 GPS 轨迹、地球观测图像和地图。每个空间数据点都可以使用坐标参考系统(如纬度/经度对)精确地放置在地图上,以便在地图上精确放置,这使我们能够研究它们之间的关系。
976 0
|
Java 应用服务中间件 容器
Servlet简介、执行流程及生命周期
Servlet简介、执行流程及生命周期
117 1
|
域名解析 弹性计算 网络协议
阿里云轻量应用服务器搭建网站教程详细版
阿里云轻量应用服务器搭建网站教程详细版,阿里云轻量应用服务器怎么使用?阿里云轻量应用服务器使用教程:轻量应用服务器购买、重置密码、远程连接、宝塔面板的Web环境搭建、WordPress网站程序安装到网站上线,阿里云服务器网分享轻量应用服务器从购买、配置建站环境、轻量服务器应用服务器远程连接、开端口到网站上线全流程
|
存储 弹性计算 分布式计算
阿里云服务器租赁费用(2022新版租赁费用及活动报价更新)
阿里云服务器租赁费用来了,本文更新了2022阿里云服务器租赁费用,包括特惠活动云服务器优惠价格及官方定价,云服务器1核2G1M带宽配置24.78元3个月1年356.83元、共享型2核4G服务器最低仅需413.86元1年、4核8G服务器765.94元1年、8核16G服务器1472.26元1年,独享型2核4G服务器最低仅需466.22元1年、4核8G服务器856.94元1年、8核16G服务器1635.74元1年。更多阿里云服务器热门配置活动报价及云服务器租赁费用及活动报价见下文。
3128 0
阿里云服务器租赁费用(2022新版租赁费用及活动报价更新)
|
前端开发 Java 应用服务中间件
深入理解SpringBoot(二)—— SpringBoot基本概念
本文讲述了SpringBoot的基本概念
299 0