一、总结封装

  封装就是将数据和操作数据的方法绑定起来,通过private修饰数据,这样对数据的访问只能通过定义的操作数据的方法get/set来操作数据。

  封装优点:1、由于将数据进行了封装,隐藏了不必要的细节,所以提高了代码的安全性。

          2、提高了代码的复用性。

       3、降低了代码的耦合度。

二、继承总结

  继承就是创建的新类可以沿用他所继承的类的属性和方法,新的这个类叫派生类也叫子类,被继承的叫做父类或超类。

  继承优点:1、不破坏封装地沿用数据

·       2、增强了代码复用能力,减少了代码书写量

三、组合和聚合的区别

    A类中包含一个对B类的引用b,当A类的对象消亡时,b所指向的对象也同时消亡,这就是组合关系。

    而引用b所指向的对象还有其他的引用指向他,这种情况叫聚合。

    人和手的关系是组合

    人和计算机的关系是聚合

四、为什么多用复合少用继承

  1. 首先高内聚,低耦合,继承特性会使得耦合度增加,所以使用复合
  2. 继承父类属性方法的同时也会继承一些没有必要的属性方法,类会变得臃肿
  3. 修改方法时由于关联父类,所以会影响父类

五、抽象与接口的区别

  1、接口中的方法都是抽象的,而且是公共的,而抽象类中可以一般方法,而且访问作用域可以有四种不同的修饰符。

  2、接口中没有变量,都是常量,而抽象类中含有常量和变量。

  3、类和接口的关系是implement,而抽象类和类的关系是extends

  4、类可以实现多个接口,而一个类只能继承一个类。

  5、接口可以多继承,抽象类只能有一个父类。

六、多态的总结

  多态特性是指允许不同子类型的对象对同一消息做出不同的相应。

  具体的应用是:

    1、方法的重载:实现的是编译时的多态性,也称为前绑定

    2、方法的重写:实现的是运行时的多态性,也称为后绑定

  实现多态需要做的两件事:

    1、方法重写(子类继承父类并重写父类中已有的或抽象的方法)

    2、对象造型(用父类型引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现不同的行为)

七、面向对象开发六个基本原则

  单一职责、开放封闭、里氏替换、依赖倒置、合成聚合复用、接口隔离、迪米特法则

  单一职责:一个类只做它自己该做的事(高内聚)。

  开放封闭:软件实体应该对扩展开放,对修改关闭。

  里氏替换:任何时候都可以用子类型替换掉父类型。(多态)

  依赖倒置:面向接口编程。

  合成聚合复用:优先使用聚合和组合关系复用代码,少用继承。

  接口隔离:接口要小而专,绝不能大而全

  迪米特法则:(最少知识原则)一个对象应该对其他对象有尽可能少的了解。、

八、重写equals方法时必须重写hashcode么?

  一般的地方不需要重载hashcode,只有当类需要放在HashTable、HashMap、HashSet等等hash接口的集合时才会重载hashCod。

  因为在使用hash结构时,想要使两个hash对象相等,则必须二者的hashcode一样,所以必须重写hashcode。如果不重写的话,本来相同的两个对象就会有不同的hashcode,从而导致混淆。

九、StringBuffer和StringBuilder的区别

  1、StringBuilder比StringBuffer的效率高,性能好

  2、StringBuilder是线程不安全的,StringBuffer是线程安全的。(在多线程下,多个线程同时想要字符串缓冲池内容,则StringBuffer是安全的,大多数是单线程的,所以一般使用StringBuilder)

  

十、Vector和ArrayList的使用区别(向量和数组列表)

  二者用法差不多,但是:

  1、vector类中所有的方法都是线程同步synchronized的,多个线程共享访问同一个Vectory对象将是安全的。

  2、ArrayList类中所有方法都是线程非同步的,不安全,多线程访问同一个ArrayList对象时,需要自己处理线程同步的问题。

  3、单线程时候,ArrayList比vector性能高速度快。(因为不用额外开一个检查监视器)

    ArrayList Iterator

    Vector  Enumeration

十一、LinkedList和Vectory、ArrayList的区别

   后两者的区别上面有了,后二者底层都是数组实现的,而LinkList是链表实现的,其查询费劲,但是增加删除比较方便。

  

javase复习的更多相关文章

  1. javaSE复习之——线程

    线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...

  2. JavaSE复习日记 : 算是个小前言吧

    /* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...

  3. javaSE复习总结

    之前匆匆忙忙学完了java,后来又接着学习ee,然而,越是想要快一点最后反而会更慢一点.因为匆忙间 我几乎什么都没学会.在后面的学习中实在非常吃力.就把javase 的视频大部分又重新看了一遍.真的收 ...

  4. JavaSE复习巩固

    第二天:复习if语句,扫描器,switch语句,循环语句 1.if语句---流程控制语句 if之前学的语句是顺序结构 1.1 单个if的语法结构 if(条件判断){ 满足条件需要做的事情: } int ...

  5. JavaSE复习总结之集合(Collection)

    Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...

  6. JavaSE复习_8 泛型程序设计

    今晚看了core Java的泛型部分,万万没有想到,当时看培训班视频入门的一带而过的泛型,有这样多的细节,整理了一下书里面提到的一些自认为的重点,方便以后观阅.由于是复习,一些基础知识跳过. △泛型类 ...

  7. JavaSE复习日记 : 方法的调用和方法的重载

    /* * 方法的调用和方法重载 */ /* * 什么是方法? * 方法就是一个有名字的代码段; * 方法的调用: * 在方法里调用另外一个方法里面的东西就是方法调用; * 或者可以认为"另外 ...

  8. JavaSE复习日记 : 循环终止语句(break/break outerFor/continue)

    最近没网,但攒了几天的博客,这次逮到机会发博客,直接三篇走起; /* * 循环终止语句: break/ break outerFor/ continue */ /* * break语句 * 1. 用于 ...

  9. JavaSE复习日记 : 接口

    /* * 接口 * 引用数据类型: * 类,接口,数组; * * 接口是一种引用数据类型,可以看作是一个特殊的类,它存在的目的是为了解决没有多重继承引起的功能弱的问题而设计的,一个类只能有一个父类,但 ...

  10. JavaSE复习日记 : 抽象类

    /* * 抽象类 * 抽象: * 面向对象的三大核心思想; * 封装: 封装,ppp是封装的一部分 * 继承; * 多态: 父类的引用指向子类的对象 * 引用: 是指一个引用型变量 * 有哪些变量? ...

随机推荐

  1. Android4.0设置界面改动总结(二)

    今年1月份的时候.有和大家分享给予Android4.0+系统设置的改动:Android4.0设置界面改动总结 时隔半年.回头看看那个时候的改动.事实上是有非常多问题的,比方说: ①.圆角Item会影响 ...

  2. UVa 170 - Clock Patience

    题目:Clock Patience游戏,将52张扑克牌,按时钟依次分成13组(中心一组),每组4张全都背面向上, 从中间组最上面一张牌開始.翻过来设为当前值,然后取当前值相应组中最上面的背过去的牌翻过 ...

  3. centos7.0 安装日志--图文具体解释-python开发环境配置

    centos7.0公布之后,就下载了everthing的DVD镜像.今天有时间,所以决定在vbox底下体验一番--- 上图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nk ...

  4. angularjs1-2,作用域、代码压缩

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. win10中让Visual Studio默认使用Administrator权限运行

    https://stackoverflow.com/questions/9654833/how-to-run-visual-studio-as-administrator-by-default Win ...

  6. 第七章 用户输入和while 循环

    7.1 创建多行字符串的方式: 01 prompt="if you tell me who you are, we can personalize the message you see.& ...

  7. 制作ubuntu的U盘启动盘

    在制作U盘启动盘之前,请各位先格式化你的U盘. 制作U盘启动盘的工具有很多种,我们这里为大家介绍的是用软碟通制作.所有我们需要有这个软件,如果大家没有可以百度“软碟通”,下载安装一个.然后点击打开.在 ...

  8. java中拦截器 过滤器 监听器都有什么区别

    过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法u ...

  9. vs的任务列表

    前几天才刚开始看到这个 很多时候,一些任务,怕忘记了,或者已经做好的东西,由于各种原因,暂时不用等等这种情况 这时候,就可以在vs上,随时加到任务列表中,方面下次直接来修改或实现等等 在vs的视图&g ...

  10. week5_notebooke1

    大纲: 01 装饰器进阶 02 函数的有效信息 03 可迭代对象.迭代器 04 生成器 列表生成式 生成器表达式 05 内置函数 06 二分查找 01 装饰器进阶 #多个装饰器装饰同一个函数: ## ...