最近几天在看java的视频,突然想到一个问题,这个问题一直困扰着我,具体是这样的:
List list=new ArrayList();
list.方法名();----这个方法只能是List接口中的方法,但据我所知,这个List只是一个接口,接口中的仅仅提供了各种方法的一个接口,并没有方法的具体实现,那么在List.add("sss");这个操作中的方法是怎么实现的???
接口里面并没有具体的实现方法啊!怎么可以真的就将数据添加进来了呢????????
List list=new ArrayList();
list.方法名();----这个方法只能是List接口中的方法,但据我所知,这个List只是一个接口,接口中的仅仅提供了各种方法的一个接口,并没有方法的具体实现,那么在List.add("sss");这个操作中的方法是怎么实现的???
接口里面并没有具体的实现方法啊!怎么可以真的就将数据添加进来了呢????????
解决方案 »
- 实现图片的传输问题。为什么代码运行到一半就停止了?请高手看看
- swt中TableEditor问题?
- 急救java.lang.IllegalStateException希望大家尽快帮我解决一下
- 如何找到PreparedStatement ps执行的SQL
- java面试中碰到的一个问题,卡住了,关于实时中断一个线程的
- 新手提问:用Eclipse来编写java程序,程序里用到的图标等在机子上的存放路径如何设置???
- 求救!!!java 串口通信问题。
- 急问:关于oracle XDK的一个错误信息
- 各位大侠,请问,学JAVA选什么书籍好?
- 在java中怎样用System.Text.Encoding.Default.GetString()方法了?
- java 网络传输 io不完整
- 菜鸟求叫!!java写MyQQ,登陆界面中的注册新用户跳链到一个注册网页怎么实现?
这就是面对接口编程。接口不做任何操作,只是强迫实现它的类去实现接口里面所有的方法,到以后你就知道这样的好处了。
list是接口,而ArrayList是list的实现类多态的条件如下:
有继承,有方法重写,有父类引用指向子类对象。在这种情况下,调用接口中的方法时,jvm会动态链接
调用子类中实现的方法。
List list=null ;
ArrayList al=new ArrayList();
list =al;就是把子类的引用发送给父类的引用
你也可以new linkedlist
linkedlist.add和arraylist.add的实现是不一样的
但他都是add建议楼主看看设计模式
然后就能比较好的理解多态了
List告诉list:我有add()借口,至于怎么add你要去找ArrayList
list就去调用了ArrayList的add()方法
父类型的引用可以指向子类型的对象。
实际上这个跟ArrayList list = new ArrayList();是一个东西,写法不同。
当然,接口根据多态也有这一特性。接口不能实例化,但实现了这个接口的子类却可以,你声明的只是一个List的引用,没new就没有生产任何东西。
的意思是父类引用指向子类对象,这样父类的实例就可以访问子类里的方法了
上面变红的地方 new ArrayList() 里边有java封装好的方法 你可以去API边看看 就能深入了解啦!!
其实你可以去看看它的原形。在JAVA包的:java.util.List
list 是一个接口,AraayList可以具体的实现这个接口,从而通过引用变量list来调用方法,你可以查一下API文档,
public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable 这就是他们的关系