java 小结2 多态问题和容器介绍
面向对象这个东西,其实我们一直是不是都没有感觉到自己在用,以后我一定要用用。以前学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了。其实一般的时候也用不到,可能在你
要改某个程序的集合实现方法的时候用到。
java 小结2 多态问题和容器介绍的更多相关文章
- java中实现多态的机制是什么?
多态性是面向对象程序设计代码重用的一个重要机制,我们曾不只一次的提到Java多态性.在Java运行时多态性:继承和接口的实现一文中,我们曾详细介绍了Java实现运行时多态性的动态方法调度:今天我们再次 ...
- java 并发多线程 锁的分类概念介绍 多线程下篇(二)
接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日 ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- 杂项-Java:jar 包与 war 包介绍与区别
ylbtech-杂项-Java:jar 包与 war 包介绍与区别 1.返回顶部 1. 做Java开发,jar包和war包接触的挺多的,有必要对它们做一个深入的了解,特总结整理如下: 1.jar包的介 ...
- Java 继承和多态
Java 继承和多态 Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因 ...
- Java基础之多态和泛型浅析
Java基础之多态和泛型浅析 一.前言: 楼主看了许多资料后,算是对多态和泛型有了一些浅显的理解,这里做一简单总结 二.什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面 ...
- Docker 容器介绍
Docker 容器介绍 Docker 是一个基于 Go 语言的开源应用容器引擎,它既能实现虚拟化,又可用于将应用服务打包成轻量.可移植的容器,从而可以发布到任何 Linux 平台.除了优秀了沙箱机制外 ...
- JUC源码分析-集合篇:并发类容器介绍
JUC源码分析-集合篇:并发类容器介绍 同步类容器是 线程安全 的,如 Vector.HashTable 等容器的同步功能都是由 Collections.synchronizedMap 等工厂方法去创 ...
- Java对象和多态
Java对象和多态 (面向对象) 面向对象基础 面向对象程序设计(Object Oriented Programming) 对象基于类创建,类相当于一个模板,对象就是根据模板创建出来的实体(就像做月饼 ...
随机推荐
- 【python】Windows安装Beautiful Soup
环境:win10,python 3.5,Beautiful Soup 4.1 步骤1:设定python为系统环境变量,具体设置如下图,在文本后加上";C:\Python35;C:\Pyt ...
- mirantis fuel 学习
这些天看了mirantis中puppet的使用,对puppet的认识有了更深入的理解.mirantis公司的fuel主要是为了方便部署生产环境的openstack的工具.主要是在集群中自动化的安装op ...
- 【Scala 】Akka库
简介编辑 Akka 是一个用 Scala 编写的库,用于简化编写容错的.高可伸缩性的 Java 和 Scala 的 Actor 模型应用.它已经成功运用在电信行业.系统几乎不会宕机(高可用性 99.9 ...
- C# - ref & out
引用参数和值参数 值参数,是在函数中此变量的任何修改都不影响函数调用中指定的参数,除非把它当作返回值返回,经典例子,交换两个数,但是返回值只有一个. 此时可以用引用参数,函数处理的变量和函数调用中使用 ...
- WindowsPhone客户端第一次审核失败记录
微软返回失败pdf,其中2.7.2和2.7.3没有通过,原因是: 1. 没有提供隐私策略,所以在提交App要填写的隐私策略url里加了隐私策略的网址链接. 2. 由于使用了定位服务,所以第一次进入应用 ...
- Interface和Abstract class区别
在面向对象中,Interface和Abstract class是实现抽象类定义的两种机制. 1.声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本 ...
- 转 JavaScript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
收藏一下 1.判断select选项中 是否存在Value=”paraValue”的Item2.向select选项中 加入一个Item3.从select选项中 删除一个Item4.删除select中选中 ...
- 关于.net那点事儿
.NET是什么? .NET是开发“托管”软件的平台. 传统环境和.NET环境区别: 传统环境——先将源代码编译为包含机器代码的可执行文件,然后由操作系统加载和执行可执行文件. .NET环境——编译器首 ...
- PHP 系统常量及自定义常量
__FILE__ 这个默认常量是 PHP 程序文件名.若引用文件 (include 或 require)则在引用文件内的该常量为引用文件名,而不是引用它的文件名. __LINE__ 这个默认常量是 P ...
- 第七章Bulk设备
小川工作室编写,本书为LM3S的USB芯片编写,上传的均为草稿,还有没修改,可能还有很多地方不足,希望各位网友原谅! QQ:2609828265 TEL:15882446438 E-mail:paul ...