接口与具体实现(Java)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口与具体实现(Java)相关的知识,希望对你有一定的参考价值。

《Thinking In Java》中有这样一段话:

接口不仅仅只是一种形式更纯粹的抽象类,它的目标比这要高。因为接口是根本没有任何具体实现的----也就是说,没有任何与接口相关的存储----因此,也就无法阻止多个接口的组合。这一点是很有价值的,因为你有时需要去表示“一个x是一个a、一个b以及一个c”。在C++中,组合多个类的接口的行为被称作“多重继承(multiple inheritance)。”它可能会使你背负很棘手的包袱,因为每个类都有一个具体实现。在Java中,你可以执行相同的行为,但是只有一个类可以有具体实现,因此,通过组合多个接口,在C++中看到的问题是不会在Java中发生的:
......

我不是很理解“具体实现”的含义,是指实例化具体对象吗?

如果是这样的话,“接口是根本没有任何具体实现的”这句话我能够理解。
但是,他说“每个类都有一个具体实现”我就不是很理解了,抽象类也有一个具体实现吗?

还有一个问题,他说“没有任何与接口相关的存储”,是指接口永远不会被载入内存吗?如果接口内有常量呢?抽象类又是如何呢?

具体实现是在类实现接口的时候由类来实现的,接口中只是包含方法的定义,在类中要把需要实现的接口的所有方法都实现。
如:
interface IMyInterface

void func();//在接口中只是声明,没有实现,也就是没有代码

在类中要有这样的方法:
void func()

//DoSomething 这个就是具体实现


抽象类就是用来做基类的,他的派生类实现抽象类的方法,这个和接口类似,但是抽象类只能单继承,而接口可以多继承。

接口只是声明的东西,实际并不分配内存,当在类中实现了接口定义的方法后才真正编译,占用内存。
参考技术A 举个更形象地例子
human.java
packet human;
interface human
public void eat();

oneperson.java
import human.human
class onehuman implements human

public void eat()

int i=1;


其中onehuman类的eat方法就是接口中eat的具体实现

以上是关于接口与具体实现(Java)的主要内容,如果未能解决你的问题,请参考以下文章

java中继承与实现接口的区别与联系是啥啊?知道的说一下,我这里谢谢了。

Java电商平台 - API 接口设计之 tokentimestampsign 具体架构与实现

Java--接口

Java—接口

java 接口一

JAVA-基础-接口