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) 对象基于类创建,类相当于一个模板,对象就是根据模板创建出来的实体(就像做月饼 ...
随机推荐
- ios短信和电话--参考
调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]]; 调 ...
- C#<热血传奇>服务端源代码再次给力更新
前段时间一直在忙公司项目,最近抽点空稍微把部分代码重新整理一下(代码太久没碰很多地方都忘记了 囧~~~) 此次还是更新服务端,并修正上一版里面存在的很多指针 异常BUG... (代码比较烂,还请各位 ...
- python mongodb 读写CSV文件
# -*- coding: utf-8 -*-import osimport csvimport pymongofrom pymongo import MongoClient #建立连接client ...
- JavaScript跨站脚本攻击
跨站脚本攻击(Cross-Site Scrpting)简称为XSS,指的是向其他域中的页面的DOM注入一段脚本,该域对其他用户可见.恶意用户可能会试图利用这一弱点记录用户的击键或操作行为,以窃取用户的 ...
- [BZOJ 3774] 最优选择 【最小割】
题目链接:BZOJ - 3774 题目分析 此题与“文理分科”那道题目有些类似.都是使用最小割来求解,先加上可能获得的权值,在减掉必须舍弃的权值(最小割). 文理分科是规定每个人和 S 连就是选文,和 ...
- CSS使块半透明方法,兼容IE6
前言 今天LOL玩机器人玩得真心不爽,实在崩溃,还是逛博客园比较爽些,记录自己的成长!说句实话我在编程方面确实是个菜鸟,菜到一种超神的地步,没一样自己特擅长的,悲催...... 废话少说,进入正题,H ...
- android fragment嵌套fragment出现的问题:no activity
package com.example.fragmentNavigation2.fragment; import android.content.Context; import android.os. ...
- Tomcat HTTP/1.1 Connector 参数整理
HTTP/1.1 Connector 概述 Coyote HTTP/1.1 Connector元素是一个支持HTTP/1.1协议的Connector组件.它使Catalina除了能够执行servlet ...
- edX开发部署开篇
edX介绍请参照百度百科 简单的讲,edX是麻省理工和哈佛大学联手创建的开源在线教育平台,任何人都可以在AGPL协议下获取它的源代码,并使用它. 本文的宗旨就是记录安装.使用.开发.维护edX的点点滴 ...
- QAbstractItemView为截断的项显示ToolTip(在eventFilter函数里覆盖QEvent::ToolTip事件)
在Qt中想要为QAbstractItemView中长度不够而使得内容被截断的项显示ToolTip,Qt官网有一篇文章介绍使用事件过滤器来显示太长的项,但是没有涵盖图标的情况.显示列头项太长的情况等等, ...