新手问题,给分!! 你说的确实有道理,但是作为一个大的工程时,Interface的作用就体现出来了。比如JDBC,SUN定了一个接口,然后各个数据库厂家实现就可以了,我们程序员不用知道具体的东西。我说的不一定准确,大概就是这个意思吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对象的多形性是java的核心,而继承、抽象类、接口是实现多形性的三个主要方法! 我个人经验认为,接口还是为了实现多重继承而设定的java不能继承多个class,但是可以扩展多个接口,从而实现多重继承搂主所说的:“如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?”其实应该是“Interface是用来使单个类拥有多种不同的方法”,当然这些方法大多都是常规性的需求,比如JDBC中大多的接口,从中就可以看出其作用JAVA申明这些接口,但不做实际的实现,这样,不同的中间开发商就可以开发自己的JDBC驱动等,只要实现这些接口就行。所以,如果如楼主的理解,不想费时,直接在接口中实现方法的需求,则会对代码的开发添加许多限制,也会对程序功能有很多影响其实接口涉及的东西很多,我只是简单针对楼主的东西说说自己的意见,未必正确 Interface是实现Java扩展性能的主要手段。看看Thinking in Java中的关于多重继承的例子你会深有体会 利用接口和抽象类,可以实现JAVA的多态性,而对象的多态性是面向对象语言的一个很重要的特点,在实际应用中,你会发现它的优点.不过这需要时间,需要积累.我起初也和你一样有这个疑问. 强烈建议研究一下rmi,再来考虑接口的问题。这可是接口问题的最经典的应用呀。 //: StringSortTest.java// A generic sorting vectorimport 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()) < 0; } public boolean lessThanOrEqual(Object l, Object r) { return ((String)l).toLowerCase().compareTo( ((String)r).toLowerCase()) <= 0; } } public static void main(String[] args) { SortVector sv = new SortVector(new StringCompare()); sv.addElement("d"); sv.addElement("A"); sv.addElement("C"); sv.addElement("c"); sv.addElement("b"); sv.addElement("B"); sv.addElement("D"); sv.addElement("a"); sv.sort(); /*quickSort(0, size() - 1);*/ Enumeration e = sv.elements(); while(e.hasMoreElements()) System.out.println(e.nextElement()); }} 还是文件读取 swing 里一个jtable默认是双击编辑单元格,如何实现单击编辑单元格呀 抽象类可以直接使用吗? 请问这段代码是什么意思? 请高手指教Iterator接口的问题 如何解决Jbuilder+Weblogic+Oralce! 如何才能使窗体里面的组件随窗体放大缩小自动调整,始终保持其相对位置 请问启动rmi Srver时,怎么将数据库驱动一起加载 求助,java小白一枚,遇到个难题,望各路大神走过路过帮忙看看,谢谢各位了,题目如下 文件字符集 请问如何在JCreator2.5中运行时加参数? java与C的Socket通信问题,紧急求助!
java不能继承多个class,但是可以扩展多个接口,从而实现多重继承
搂主所说的:“
如说Interface是用来使不同类拥有相同的方法的话,那么干吗这么费时,先写一个Interface,然后,再在各个子类中在注意说明各个子类的方法呢(override)?
”
其实应该是“Interface是用来使单个类拥有多种不同的方法”,当然这些方法大多都是常规性的需求,比如JDBC中大多的接口,从中就可以看出其作用
JAVA申明这些接口,但不做实际的实现,这样,不同的中间开发商就可以开发自己的JDBC驱动等,只要实现这些接口就行。所以,如果如楼主的理解,不想费时,直接在接口中实现方法的需求,则会对代码的开发添加许多限制,也会对程序功能有很多影响
其实接口涉及的东西很多,我只是简单针对楼主的东西说说自己的意见,未必正确
看看Thinking in 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()) < 0;
}
public boolean
lessThanOrEqual(Object l, Object r) {
return ((String)l).toLowerCase().compareTo(
((String)r).toLowerCase()) <= 0;
}
} public static void main(String[] args) {
SortVector sv =
new SortVector(new StringCompare());
sv.addElement("d");
sv.addElement("A");
sv.addElement("C");
sv.addElement("c");
sv.addElement("b");
sv.addElement("B");
sv.addElement("D");
sv.addElement("a");
sv.sort(); /*quickSort(0, size() - 1);*/ Enumeration e = sv.elements();
while(e.hasMoreElements())
System.out.println(e.nextElement());
}
}