当前位置: 技术问答>java相关
新手问题,给分!!
来源: 互联网 发布时间:2015-11-10
本文导语: 我是刚由VB转入JAVA的,在学习过程中,有个问题: JAVA中的Interface的作用到底是干什么的(请不要用书上的话来敷衍),做好用一个必须的例子说明一下 ,我觉得,在许多情况下,不用Interface,也可以解决,且...
我是刚由VB转入JAVA的,在学习过程中,有个问题:
JAVA中的Interface的作用到底是干什么的(请不要用书上的话来敷衍),做好用一个必须的例子说明一下 ,我觉得,在许多情况下,不用Interface,也可以解决,且蛮方便。
如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?
待!!!!
JAVA中的Interface的作用到底是干什么的(请不要用书上的话来敷衍),做好用一个必须的例子说明一下 ,我觉得,在许多情况下,不用Interface,也可以解决,且蛮方便。
如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?
待!!!!
|
我个人经验认为,接口还是为了实现多重继承而设定的
java不能继承多个class,但是可以扩展多个接口,从而实现多重继承
搂主所说的:“
如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?
”
其实应该是“Interface是用来使单个类拥有多种不同的方法”,当然这些方法大多都是常规性的需求,比如JDBC中大多的接口,从中就可以看出其作用
JAVA申明这些接口,但不做实际的实现,这样,不同的中间开发商就可以开发自己的JDBC驱动等,只要实现这些接口就行。所以,如果如楼主的理解,不想费时,直接在接口中实现方法的需求,则会对代码的开发添加许多限制,也会对程序功能有很多影响
其实接口涉及的东西很多,我只是简单针对楼主的东西说说自己的意见,未必正确
java不能继承多个class,但是可以扩展多个接口,从而实现多重继承
搂主所说的:“
如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?
”
其实应该是“Interface是用来使单个类拥有多种不同的方法”,当然这些方法大多都是常规性的需求,比如JDBC中大多的接口,从中就可以看出其作用
JAVA申明这些接口,但不做实际的实现,这样,不同的中间开发商就可以开发自己的JDBC驱动等,只要实现这些接口就行。所以,如果如楼主的理解,不想费时,直接在接口中实现方法的需求,则会对代码的开发添加许多限制,也会对程序功能有很多影响
其实接口涉及的东西很多,我只是简单针对楼主的东西说说自己的意见,未必正确
|
强烈建议研究一下rmi,再来考虑接口的问题。这可是接口问题的最经典的应用呀。
|
//: StringSortTest.java
// A generic sorting vector
import java.util.*;
interface Compare {
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
//////////////////////////////////////////////////////////////////////
class SortVector extends Vector {
private Compare compare; // To hold the callback
public SortVector(Compare comp) {
compare = comp;
}
public void sort() {
quickSort(0, size() - 1);
}
private void quickSort(int left, int right) {
if(right > left) {
Object o1 = elementAt(right);
int i = left - 1;
int j = right;
while(true) {
while(compare.lessThan(
elementAt(++i), o1))
;
while(j > 0)
if(compare.lessThanOrEqual(
elementAt(--j), o1))
break; // out of while
if(i >= j) break;
swap(i, j);
}
swap(i , right);
quickSort(left, i-1);
quickSort(i+1, right);
}
}
private void swap(int loc1, int loc2) {
Object tmp = elementAt(loc1);
setElementAt(elementAt(loc2), loc1);
setElementAt(tmp, loc2);
}
}
//////////////////////////////////////////////////////////////////////////
public class StringSortTest {
static class StringCompare implements Compare {
public boolean lessThan(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(
((String)r).toLowerCase())
// A generic sorting vector
import java.util.*;
interface Compare {
boolean lessThan(Object lhs, Object rhs);
boolean lessThanOrEqual(Object lhs, Object rhs);
}
//////////////////////////////////////////////////////////////////////
class SortVector extends Vector {
private Compare compare; // To hold the callback
public SortVector(Compare comp) {
compare = comp;
}
public void sort() {
quickSort(0, size() - 1);
}
private void quickSort(int left, int right) {
if(right > left) {
Object o1 = elementAt(right);
int i = left - 1;
int j = right;
while(true) {
while(compare.lessThan(
elementAt(++i), o1))
;
while(j > 0)
if(compare.lessThanOrEqual(
elementAt(--j), o1))
break; // out of while
if(i >= j) break;
swap(i, j);
}
swap(i , right);
quickSort(left, i-1);
quickSort(i+1, right);
}
}
private void swap(int loc1, int loc2) {
Object tmp = elementAt(loc1);
setElementAt(elementAt(loc2), loc1);
setElementAt(tmp, loc2);
}
}
//////////////////////////////////////////////////////////////////////////
public class StringSortTest {
static class StringCompare implements Compare {
public boolean lessThan(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(
((String)r).toLowerCase())