面向对象
面向对象是一种思想,吧事务的问题拆分成对象,在描述解决问题中所表现的行为,通过封装,get set 方法向外界提供对应的接口提高代码的安全性,继承;父类提供方法,子类继承,提高代码的复用性,多态:允许不同子类的对象对同一消息做出不同的响应;分为编译时多态运行时多态;方法的重载实现了编译时多态,运行时态{例如:A系统访问B系统,B系统提供多种服务,但是对于A系统来说都是透明的};运行时多态是面向对象的精髓,实现运行时多态;两件事1方法的重写,2对象造型(父类引用引用子类对象,同样引用调用同样的方法对子类的对象做出不同表现的行为)》》》抽象是将一类对象共同特征总结构造类的过程,不注重细节,注重属性方法
面向对象有哪些特征
{
(继承,封装,多态;相辅相成)
封装:封装类的一些实现机制,向外界提高特有的接口,get set 的方法 增加代码的可维护性;便于修改,封装好的东西可以直接使用,提高代码的复用性
继承:父类提供公共方法,子类继承; 减少一些重复的代码;
提高代码的复用性
多态: 要有继承,重写,父类引用子类对象 调用方法时;封装继承多态增加代码的健壮性,灵活性
}
ArrayList与LinkedList的区别
{
都实现了List接口
ArrayList的实现基于数组,LinkedList的实现基于双链表
对于随机访问ArrayList的优先级高于LinkedList;ArrayList直接根据元素的下标进行访问
LinkedList的每一个元素都依靠地址和他最后一个元素连接在一起
对于插入和删除LinkedList 的优先级高于ArrayList;因为元素添加的LinkedList任意位置时,不需要像ArrayList那样重新计算大小更新 索引
LinkedList比ArrayList更占用内存,因为LinkedList的节点除了储存数据,还储存两个索引,一个指向前一个元素,一个指向后一个元素;
}
高并发中集合的问题
{
jdk1.2
Vector Hashtable 保证线程的安全,使用Synchronized 缺点:效率低
ArrayList 与HashMap 线程不安全 性能高; 代替Vector 与Hashtable
需要线程安全时 使用SynchronizedList 与SynchronizedMap 解决线程不安全
底层在使用Synchronized 代码块锁时,虽然锁住了所有代码,但是锁在方法里面,方法外的可以理解为提高,因为方法本身就要分配资源
}