interface A{
void f();
}class B implements A{
public void f(){
...........
}
}A a=new B();//通过接口类型的引用变量来访问对象,通过a来引用B实现了接口A中的方法f()
void f();
}class B implements A{
public void f(){
...........
}
}A a=new B();//通过接口类型的引用变量来访问对象,通过a来引用B实现了接口A中的方法f()
解决方案 »
- 2个int 整除并求余 有没有一个高效算法。
- JNI问题。C++如何调用JAVA的函数
- 问各位高手门一个初级问题,怎么把数组的序列赋给arraylist呢???
- 关于JAVA IDE 启动不了的问题?
- 我这样写消息队列为什么错,代码是。。。
- 在Jbuilder9里怎样设置TAB键呀?我的TAB键总是不能用!倾家荡产来提问,(就只有40分了)
- 部分*.jar不能执行??高手指教。
- 在java裡,怎麼樣讓按鈕無效(不能用)和有效?
- 初级问题---多谢您的帮忙
- 各位高手!讨教!?我安装完JB5后,总是要注册,可是注册返回提示错误?怎么解决?
- focus问题
- JTable的问题:如何自动滚动到选中的那一行
void f();
}class B implements A{
public void f(){
System.out.println("this is B");
}
}class C implements A{
public void f(){
System.out.println("this is c");
}
}
class Test{
public static void main(String args[]){
A a = new B();
a.f(); //这里打印出,this is b
a = new C();
c.f(); //这里打印出 this is c
}
}
通过接口创建新的类然后通过新类实现接口的方法
实现后的封装性更好,多个组件可以共享同一个接口对象,
而且通过对接口类的扩展(构造函数)来传递更多的参数,不像addActionListener(this),只有一个固定参数,可以MyAction ac=new MyAction(a,b,c,d,e),然后再到接口类中使用这些参数。但是好像都使用的内部类(Core Java I)
我觉得动作这个抽象类也很不错(AbstractAction)
interface Shape{
void draw();
}class Triangle implements Shape {
public void draw() { //实现接口
System.out.println("draw a Triangle.");
}
//other code.
}class Square implements Shape{
public void draw() { //实现接口
System.out.println("draw a Square.");
}
//other code.
}class Circle implements Shape {
public void draw() { //实现接口
System.out.println("draw a Circle");
}
//other code.
}class AllShape {
public static void main(String[] args) {
Shape[] s = new Shape[3];
s[0]=new Triangle();
s[1]=new Square();
s[2]=new Circle();
for(int i=0;i<s.length;i++)
s[i].draw(); //通过接口类型的引用变量来访问对象,
//这里会根据不同的形状画出图形
}
}
推荐《Java编程思想》
上面这种基础问题讲得太详细了,而且深入浅出
就拿java.sql.Connection来说
对于不同的数据库实现连接数据库的逻辑是不一样的,哪么sun是否把所有的数据库连接的逻辑都写出类来呢,这是不可能的,于是接口就来了,sun只要定义一些方法,这些方法是在java.sql.Statement等其它类中用到的.这样一来如何实现数据库连接就不要由sun来实现了.对于扩展,如果以后出现一新的数据库哪么它也可以根据sun的接口实现里面的方法就OK了.