接口与具体实现(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中继承与实现接口的区别与联系是啥啊?知道的说一下,我这里谢谢了。