美文网首页
关于接口的简单理解

关于接口的简单理解

作者: BWH_Steven | 来源:发表于2019-06-03 19:42 被阅读0次

第五章 接口

5.1 接口概述

常见的猫狗案例 猫和狗它们仅仅提供一些基本功能。

但有一些不是动物本身就具备的,比如:猫钻火圈,狗跳高等功能

是在后面的培养中训练出来的,这种额外的功能,java提供了接口表示。

5.2 接口特点

A:接口用关键字interface表示

[public] interface 接口名{
}
  1. 接口中的方法不能具体实现,接口中的方法必须为抽象方法

  2. 接口中一般不定义变量,因为接口中的变量会被默认指定为 public static final 变量(只能是)

B:类实现接口用implements 表示

class 类名 implements 接口1,接口2,[....]{
}

1.一个类(非抽象类)可以遵循多个接口,并且需要实现(重写)该接口中所有的方法

2.子类为抽象类的意义不大

5.3 接口的成员特点

A:成员变量
只能是常量

​ 默认修饰符:public static final

B:构造方法

​ 没有构造方法

C:成员方法

​ 只能是抽象的

​ 默认修饰符:public abstract

5.4 抽象类和接口的区别(重要)

我们从我们实际设计场景中来切入这个话题

先来举一个简单的例子:

狗都具有 eat() 、sleep() 方法,我们分别通过抽象类和接口定义这个抽象概念

//通过抽象类定义
public abstract class Dog {
    public abstract void eat();
    public abstract void sleep();  
}
//通过接口定义
public interface Dog {
    public abstract void eat();
    public abstract void sleep();
}

但是我们现在如果需要让狗拥有一项特殊的技能——钻火圈 DrillFireCircle(),如何增加这个行为呢?

思考:

  1. 将钻火圈方法与前面两个方法一同写入抽象类中,但是这样的话,但凡继承这个抽象类狗都具有了钻火圈技能,明显不合适

  2. 将钻火圈方法与前面两个方法一同写入接口中,当需要使用钻火圈功能的时候,就必须实现 接口中的eat() 、sleep() 方法(重写该接口中所有的方法)显然也不合适

那么该如何解决呢 ? 我们可以仔细想一想,eat和sleep都是狗本身所应该具有的一种行为,而钻火圈这种行为则是后天训练出来的,只能算是对狗类的一种附加或者延伸, 两者不应该在同一个范畴内,所以我们考虑将这个单独的行为,独立的设计一个接口,其中包含DrillFireCircle()方法, Dog设计为一个抽象类, 其中又包括eat() 、sleep() 方法.

一个SpecialDog即可继承Dog类并且实现DrillFireCircle()接口

下面给出代码:

//定义接口,含有钻火圈方法
public interface DrillFireCircle() {
    public abstract void drillFireCircle();
}

//定义抽象类狗类
public abstract class Dog {
    public abstract void eat();
    public abstract void sleep();
}
 
//继承抽象类且实现接口
class SpecialDog extends Dog implements drillFireCircle {
    public void eat() {
      //....
    }
    public void sleep() {
      //....
    }
    public void drillFireCircle() () {
      //....
    }
}

总结:

继承是一种 "是或不是"的关系,而 接口 实现则是 "有或没有"的关系。如果一个类继承了某个抽象类,它的子类则一定是抽象类的种类,而接口实现则是有或者没有、具备或者不具备的关系,比如狗是否能钻火圈,能则可以实现这个接口,不能就不实现这个接口。

结尾:

如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !_

如果能帮到你的话,那就来关注我吧!(转载请注明出处,盗文必究)

在这里的我们素不相识,却都在为了自己的梦而努力 ❤

一个坚持推送原创Java技术的公众号:理想二旬不止

相关文章

  • 关于接口的简单理解

    第五章 接口 5.1 接口概述 常见的猫狗案例 猫和狗它们仅仅提供一些基本功能。 但有一些不是动物本身就具备的,比...

  • 简单理解接口测试

    什么是接口? 上面是百度给我的答案,那么具体是什么意思呢?打两个比方: 我们通过上下和楼层按钮来乘坐电梯,这些按钮...

  • tf.nn.embedding_lookup

    关于这个接口,一直有疑惑,今天通过一个非常简单的例子简单理解了一下。 原型:tf.nn.embedding_loo...

  • 关于接口和抽象类的简单理解

    抽象类: 抽象类体现了数据抽象的思想,是实现多态的一种机制。 1.由abstract关键词修饰的类称之为抽象类。 ...

  • 关于接口设计的理解

    数据源 接口起到的是承前启后的数据交互传输的作用,比如iOS/Android/前端需要接口数据支撑, 服务端开始根...

  • java接口(超简单理解)

    接口 今天是个阳光明媚的一天,打电话给小鱼跟他传授一下 java中的interface 接口。小马:滴滴滴.......

  • Java接口

    接口实际上也可以简单理解为一种父类,但是接口有不同于类的特性,声明接口的方式 访问权限 interface 接口名...

  • 简单粗暴理解接口回调

    刚开始学习接口回调的时候,乍一听接口回调这个名词感觉很高大上一样 于是就去网上找了一些接口回调的知识 网上总结的...

  • 关于堆栈的简单理解

    参考地址:http://soft.chinabyte.com/database/407/11319907.shtm...

  • 关于Handler的简单理解

    handler主要用于线程的切换,因为在安卓中,主线程不能进行耗时操作,而子线程不能更新UI,所以当子线程网络请求...

网友评论

      本文标题:关于接口的简单理解

      本文链接:https://www.haomeiwen.com/subject/axyhxctx.html