比如 interface A
Class B implement A
这样的话类B实现了接口A中定义的方法.
可以通过 A a=new B()来实现,这样做跟直接实例化B(B b=new B())然后调用同样的方法,这样有什么区别吗?
如果效果是完全相同的,那么实现接口的意义何在呢?不过在编程中经常会发生类B本身不能实例化,但是通过接口却能调用方法.这个是什么原理呢?
我猜想类B可能是抽象类,那么抽象类又是怎么实现A a=new B()这个过程的呢?如果是被子类继承的,那么直接实例化它的子类不就结了吗?为什么还要用接口呢?
Class B implement A
这样的话类B实现了接口A中定义的方法.
可以通过 A a=new B()来实现,这样做跟直接实例化B(B b=new B())然后调用同样的方法,这样有什么区别吗?
如果效果是完全相同的,那么实现接口的意义何在呢?不过在编程中经常会发生类B本身不能实例化,但是通过接口却能调用方法.这个是什么原理呢?
我猜想类B可能是抽象类,那么抽象类又是怎么实现A a=new B()这个过程的呢?如果是被子类继承的,那么直接实例化它的子类不就结了吗?为什么还要用接口呢?
解决方案 »
- 求高手解答正则问题
- JAVA中 (int/Integer + “”)转换成String 执行效率更高?
- 我有java数据结构与算法的问题~高手请帮忙看看~~第一次发帖,到处询问~不好意思。
- java io 的问题!
- java网络编程这块
- 请问如何在java应用程序当中实现打印功能?
- ******************请问这样java里怎样实现,100分,可以UP********************
- 能在Eclipse中定义宏操作么?如果能的话,如何定义?
- 请问如何将一个时间类型的值转换为字符串?
- ****************小问题!*************
- 有人用java做过p2p平台吗?
- List的排序
a.method()是调用的B中重写的方法.
若还有一个class c implement interface A 就可以用上面的a = new c();
若是B b = new B();
这样行吗?你现在应该知道了为什么用交类的也就是这里的interface A 了.看一下多态方面的东西.你就会明白的
对于B b = new B();这个是不能实现上面这个效果的!!!!这样你就可以看得清楚两者的区别了吧!!!
希望我的回答你可以满意!!!!
---------------
其实是差不多的,看需要
比如B除了实现A的接口方法外,有自己的方法,A a = new B(),这样a只是作为A,不能直接调用B自己的方法,加入a只需要调用A的接口方法那么两个是一样的。还有一个跟跟你提到的不太一样的面向接口编程思想:
public void fun(A a){}//能接受A及所有实现A的子类
public void fun(B b){}//只能接受B或者B的子类
不过在编程中经常会发生类B本身不能实例化,但是通过接口却能调用方法.
----------
能否举个例子?
估计是楼主错误理解了,以为用接口返回就是实例化接口的过程,其实是实现接口的子类做的工作,只不过拿接口取接收他,就像你上面的A a = new B(),本来是B,拿A接受也没错,A是接口。。