面向对象这个东西,其实我们一直是不是都没有感觉到自己在用,以后我一定要用用。以前学c#时候认真的看过一次,最近一直研究java。随便再看看。
多态问题:
在java中多态分为(1)编译时多态和(2)运行时多态
(1)编译时多态比较容易理解:其实就是通过方法重载,就是方法的重载,同一个函数名但是可以参数不一样。这就是重载(so easy)
(2)运行时多态:这个是通过方法覆盖实现的,就是子类在继承父类的时候,通过对某个方法的重写,覆盖父类方法。
简单的说:比如我们有个父类A,子类B通过Extends继承了A,C,D也是,我们在方法调用的时候只要用调用A就行了。
(使用父类引用指向子类对象,在调用某一父类中的方法时,不同的子类就会表现出不同的方法结果,这就是多态,有继承才有多态)
作用:扩展性好,我们在新增某个类的时候,只要继承父类,并覆盖父类方法就ok了。一个接口多种实现方式,继承的表现就是多态。
(应用程序不必对每一个派生类编写一个功能调用,只需要对抽象基类进行处理即可)
我补充一下使用接口的理由:它能使我们创建更加通用的代码,通过针对接口而非具体实现类来编写代码,这样我们的代码可以应用更多地对象类型。
容器:
我们使用比较多的肯定是List<T> list=new ArrayList<T>,不可否认ArrayList很强大,但是其实java还有好多其他的好东西。
首先要说明一下List是一个接口而已,不能List x=new List();List只是声明了函数,并没有实现。ArrayList是一个继承了List的具体实现类而已。
(1)数组:说到容器,可能要提到数组,算了,暂时就把数组看出是固定了大小的容器(其实它不是容器),然后由于知道数组大小,所以用参数下标即可随机访问,速度应该是最快的 O(1),要注意的一点就是数组的legths是数组的大小而不是数组里面的数据个数。
(2)Collection和Collections的区别
Collection是集合类的*接口,它下面还有List和Set两个接口,(接口继承接口)
Collections是集合类的一个工具类,这个类提供了一系列的静态函数,可以用来对集合排序,选取最大值。。。。。。
(3)用图来说明一下关系(还有map,它是和Collection一个级别的,包括hashtable,hashMap。。。。)
(4)迭代器(iterator)
迭代器是一种设计模式,这他妈也是设计模式。我们知道迭代器是用来选取集合对象的,我们通过迭代器选取对象引用可以直接对对象进行操作。代码我就不贴了。
作用:作为一种设计模式,可以做到不必要知道或者重写代码就可以应用不同类型的容器。
这个可能无法理解,这么说吧:就是我们可以不必管集合是用什么方式实现的,管他是list还是map,我反正只需要调用迭代器就ok了。其实一般的时候也用不到,可能在你
要改某个程序的集合实现方法的时候用到。