当前位置:编程学习 > JAVA >>

接口有什么用?JAVA问题

接口既然是抽象的,那么有什么用?我类中也要重写方法,那不是多此一举?到底有什么用处?请高手举个必须用接口的例子我看看。拜拜
追问:那他这个接口的方法是空的呀。我实现接口如果不写具体内容还不是为空,什么都不做;如果写了,那我直接写方法就行,根本不用写接口;
答案:接口定义
关于java的接口定义方式,以下三种情况下可以采用接口定义方式:
1. 接口中声明的变量全部为final 和static类型的,并且这个接口的作用在于定义一些值不能改变的变量。
举个例子:
public interface ObjectConstants{
public static final String SPACE = new String(" ");
public static final char FORMFEED = '\f';
}
2. 接口中只定义可供实现的抽象方法
EventListener.java
public interface EventListener {
public void handleEvent(Event evt);
}
Runnable.java
package java.lang;
public interface Runnable {
public abstract void run();
}
3. 还有一种方式是上述两种方式的组合,如非必要一般会将这样一个接口定义拆分成两个接口定义
抽象类的定义
1. 如果一个类包含一个接口但是不完全实现接口定义的方法,那么该类必须定义成abstract型
例如InputStream.java类的定义方式:
package java.io;
public abstract class InputStream implements Closeable {
// SKIP_BUFFER_SIZE is used to determine the size of skipBuffer
private static final int SKIP_BUFFER_SIZE = 2048;
// skipBuffer is initialized in skip(long), if needed.
private static byte[] skipBuffer;
public abstract int read() throws IOException;


public int read(byte b[]) throws IOException {
return read(b, 0, b.length);
}
public int read(byte b[], int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return 0;
}
int c = read();
if (c == -1) {
return -1;
}
b[off] = (byte)c;
int i = 1;
try {
for (; i < len ; i++) {
c = read();
if (c == -1) {
break;
}
if (b != null) {
b[off + i] = (byte)c;
}
}
} catch (IOException ee) {
}
return i;
}
public long skip(long n) throws IOException {
long remaining = n;
int nr;
if (skipBuffer == null)
skipBuffer = new byte[SKIP_BUFFER_SIZE];
byte[] localSkipBuffer = skipBuffer;
if (n <= 0) {
return 0;
}
while (remaining > 0) {
nr = read(localSkipBuffer, 0,
(int) Math.min(SKIP_BUFFER_SIZE, remaining));
if (nr < 0) {
break;
}
remaining -= nr;
}
return n - remaining;
}
public int available() throws IOException {
return 0;
}
public void close() throws IOException {}
public synchronized void mark(int readlimit) {}
public synchronized void reset() throws IOException {
throw new IOException("mark/reset not supported");
}
public boolean markSupported() {
return false;
}
}
2. 抽象类的方法体中只定义抽象的方法,例如AbstractMethodError.java
package java.lang;
public class AbstractMethodError extends IncompatibleClassChangeError {
public AbstractMethodError() {
super();}
public AbstractMethodError(String s) {
super(s); }
}举个很简单也比较俗的例子
WC就是一个接口而我们上厕所则是实现了这个接口“上厕所”则是通用的名词,它规定我们在里面干什么,就像接口的方法名,返回值一样(当然,如果谁要在WC吃饭,那我也无话可说)
而至于这厕所怎么个上法,则由我们自己去实现。(比如:你可以蹲着,也可以站着,只要你愿意)
那么我们要上厕所,则必须去WC,这就是WC存在的意义。
这也就是接口存在的意义。
例子比较俗,见谅!




既然存在自然有他的理由,至少,你可以更新某个类里的某些成员的实现代码(比如版本升级)而不必去更新整个模块文件,只要接口不变,就可以以最小的更新代价来达到目的。
接口是类的规范,大型项目中这种规范很重要,小项目应用接口也有利于升级扩展,它就好比是一本该项目的规范手册,规定了程序员在编写类的时候具体要去实现哪些功能,并提供统一的命名。当你实现某个接口的时候,就必须实现它的所有功能,这就是这种规范的功能体现。实例就不用举了,因为你了解了它的用途,当你有这种需求时 自然会想到它。

希望你能抽出时间来 找本书好好的看看

推荐 <<think in java>>

看来你是个初学者,这个问题其实以后你渐渐的就会明白,如果现在说给你听你只会让你更模糊。

接口的用处有很多,不是一个二个例子能概括的。

等你学习的深入,你自然就会明白.

每个人都有这段经历的.

首先接口是为了克服继承单一性的缺点而出现的。

再来说说它怎么理解。举个例子,如果机动车中有2个抽象方法:“收取费用”,“调节温度”的功能,而其他的一些类比如飞机,轮船等需要“收取费用”或者“调节温度”的功能。接口可以增加很多类都需要实现的功能,不同的类可以使用相同的接口,同一个类也可以实现多个接口。接口只关心具不具备功能,并不关心功能的具体实现,比如“客车类”实现一个接口,该接口中有一个“收取费用”的方法,那么这个“客车类”必须给出收取费用的具体操作,不同车的类都可以实现“收取费用”,但是“收取费用”的手段可能不同。接口的思想在于它可以增加很多类偶读需要实现的功能,使用相同的接口类不一定有继承关系,就像各种商品,它们隶属不同的公司,工商部门要求都必须具有显示商标的功能(即实现同一接口),但商标的具体制作由各个公司自己去实现。接口可以实现不同的功能。

再写段代码你自己体会一下:

interface 收费 //声明一个接口

{

public void 收取费用();

}//接口具备”收费“这个功能,但是不会实现它

i

nterface 调节温度

{

public void controlTemperature();

}

class 公共汽车 implements 收费 //公共汽车使用这个接口

{

public void 收取费用()

{

System.out.println("公共汽车:一元/张,不计公里数");

}

}// 这就是具体实现了

class 出租车 implements 收费,调节温度

{

public void 收取费用()

{

System.out.println("出租车:3元/每公里,起步价12.5元");

}

public void controlTemperature()

{

System.out.println("安装了空调");

}

}

还可以写很多类似的

class A

{

.........下面实例化调用就自己写了

}

不知道你看了明不明白··反正

接口就是先定义好规则和方法 具体做什么事情就看各个实现类了

这样可以避免代码的依赖性 删除任何一个实现类都不会影响其他模块的使用

多写几次你就能体会到他的好处的

接口的最主要的作用是达到统一访问,就是在创建对象的时候用接口创建,【接口名】 【对象名】=new 【实现接口的类】,这样你像用哪个类的对象就可以new哪个对象了,不需要改原来的代码,就和你的USB接口一样,插什么读什么,就是这个原理。就像你问的,都有个method1的方法,如果我用接口,我上面就可以one.method1();是吧?那样我new a();就是用a的方法,new b()就是用b的方法
这样不方便吗?
这个就叫统一访问,因为你实现这个接口的类的方法名相同,但是实现内容不同
我用接口来定义对象不就可以做到统一访问了吗?接口主要针对多个类实现它来说的,要是只有一个类当然可以不用接口了.你这样想,我做一个USB接口,有个read()抽象方法,然后mp3类实现,U盘类实现,移动硬盘类实现,这样我用的时候用USB a=new 【类名】;这样a.read();要是我类名里写U盘,就读U盘,写mp3就读mp3,而这个名字可以从属性文件里读,你写哪个就用哪个了,呵呵。

资格证书

能不能干什么没关系,有证就当你能干

给别人看的,人家一看到就大概知道这个类能干什么了

至于用的时候你干不干是你的事,跟接口的意思反着干都行

估计他们给的答案没人看的 我看的都晕

继承知道吗 继承的用处大吧 一个类继承了另一个类 他的属性 方法就多了

那么还要接口做什么呢 ? java中不能实现多继承 就是class A extends B extends C是错误的

因此就出了接口? 接口的出现就是弥补 不能实现多继承的缺陷 class A implements B,C作用更大了

接口就是一种标准,就像插板那个口是的,我规定我的是三孔插座,你就只能插3个头的,我规定我这里头只能插圆头的,你就不能插方头的,按我规定的走我就让你用,你走到哪都能用,只要遵循我这个标准的就行
诸如接口是种标准之类的话我就不多说了。
我在实际工作项目中,使用接口,有一个很明显的目的,就是进行远程

上一个:c,java,c++取舍?
下一个:有完整的JAVA编程嘛?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,