首页 > 技术文章 > 10月份学习小结-Java语言篇

lilei94 2017-11-07 22:19 原文

---恢复内容开始---

  10月以来,实验室三院软件那个题比较紧,DLR算例花了不少时间(虽说只是跟着高老师打下手),另外毕设题目定下来了,重叠网格算多体分离,我最终还是没有做基础研究,也未必是件坏事。背景是老蒋的项目,真不想跟着他干啊,时不时就要跟你讲几句,一讲半个、一个小时就没了,还经常啥收获都没有。以后晚上有机会我就溜吧。

  工作时间外,我看了几遍天马营的Java入门教程,结合着《Java核心教程-卷Ⅰ》来看,对Java的基本特性有了一个总体的框架。后来经过和博帅的讨论,觉得语言只是工具,重点应该转向数据结构、算法类的计算机基础知识,于是在网上开始学习严蔚敏老师的《数据结构》课程,老师讲得非常清楚,收获很多。

  首先是Java的基本特性。忘记在哪里看到的了,Java面向对象的四个基本特性是:抽象、封装、多态、继承。

  抽象:Java可以定义抽象类,当现有信息无法完整描述一个具体对象时,选择用抽象类,关键字为abstract。方法也可声明为抽象方法,依据现有信息可能一个方法可能无法准确定义,就声明为抽象方法(比如求一个几何图形的面积,由于事先不知道图形的几何形状,无法给出具体公式)。一般来说,将一个类声明为抽象类的原因在于其包含了抽象方法。抽象类无法实例化为对象,必须被继承(extends),才能被使用。另外一个与抽象类很类似的概念是接口。接口是一组抽象方法的集合,接口无法实例化为对象,但可以被实现(implement),实现接口的类,必须实现接口中的所有方法。抽象类和接口体现了Java抽象的特点,二者都代表系统的抽象层。两者的区别在于,抽象类可以提供部分方法的实现,但不支持多继承(一个类只能继承一个抽象类);接口不能实现任何方法,但支持多继承(一个类实现多个接口)。另外一个本质区别是,抽象类是一种is-a的关系,接口则代表了接口定义者和接口实现者的一种契约关系,并不要求满足is-a的关系。

  继承:我感觉继承和抽象联系比较密切,因为正是有了抽象层的父类(或者接口,这里我不确定接口以及其实现算不算做继承),才会有继承父类的子类(或者实现接口的类)。继承的好处在于可以将通用的方法放置在父类之中,子类可以使用或者重写父类的方法,而无须另外定义,减少工作量,增强代码可读性和维护性。

  多态:多态也是在继承的时候体现的。例如有一个Employee的父类以及Manager子类,使用Employee来循环,此时Employee既可以代表父类”职员“也可以代表子类”经理“,即此时Employee引用变量会根据实际情况指向多个变量。多态的根本原因在于父类和子类是一种is-a的关系,即”经理“肯定是”职员“。(本部分还待完善,理解不深刻)

  封装:Java使用private、protect、public修饰符来实现封装。private修饰方法和成员变量,只允许本类自身可以访问;protected修饰方法:本类以及其子类可以访问;public修饰方法:任何类都可以访问。private修饰类,不提倡;public修饰类,任何类都可以访问该类;类无修饰符表示本包可以访问。

  这四个算是已经归入知识体系中的,但还接触了一些概念,游离在体系之外:映射map、泛型、Java集合、异常处理、Java IO。泛型、异常以及IO概念稍微牢固一些,先小结一番,其它的等以后理解得深了再写。

  使用泛型主要是由于类或者方法输入的参数类型不确定,故定义一个泛型参数,将变量类型也作为输入参数输入到类或者方法中;当一个类中的方法运行可能出现错误时,该类需抛出异常,由使用该类方法的类用try/catch/finally语句进行处理;也可以在可能出现错误的类中直接处理。可以自定义异常,即用一个类继承Exception类,抛出这个异常。Java IO即一些输入输出的接口,按照规则来用即可。

  总的来说,学到现在一切还算顺利,就是感觉有点慢。十一月精力主要放在开题还有蒋老师的项目上,空余时间学也是主要在数据结构和算法上,对Java语言本身这块可能会顾及不到。我看了后面还有Spring、Java虚拟机JVM等要学,任务有点重。另外,实际操作的机会应该怎么来创造呢?我现在的想法是在学数据结构的过程,用Java来实现严老师讲的基本数据结构,这对数据结构和Java语言都是一个巩固。

  不要着急,稳扎稳打!对概念要想清楚,切忌似是而非!学得多不如学得精!

推荐阅读