Java基础

多态:对象具有多种形态

  • 引用的多态:父类的引用可以指向本类的对象;父类的引用可以指向子类的对象。

  • 方法的多态:创建本类对象时,调用的方法为本类方法;创建子类对象时,调用的方法为子类重写的方法或者继承的方法。

引用类型的转换

  • 向上类型转换(隐式/自动类型转换),是小类型向大类型的转换
  • 向下类型转换(强制转换类型),是大类型到小类型的转换
  • instanceof 运算符可以避免引用类型的对象的类型转换安全性问题

抽象类应用场景

  • 某个父类只是知道其子类应该包含怎样的方法,但是无法准确知道这些子类如何实现这些方法
  • 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,避免子类设计的随意性。

抽象类的作用:限制规定子类必须实现的方法,但是不关注实现细节。

抽象类的使用规则

  • abstract定义抽象类
  • abstract定义抽象方法,只有声明,不需要实现
  • 包含抽象方法的类是抽象类
  • 抽象类中可以包含普通的方法,也可以没有抽象方法
  • 抽象类不能直接创建,可以定义引用变量

接口:接口可以理解为一种特殊的类,由全局常量和公共的抽象方法组成。如果说类是一种具体的实现体,那么接口定义了某一批类锁需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法实现的细节,它只规定这些类里必须提供某些方法。接口使用 interface 关键字。

  • 接口一定是用public修饰
  • 接口可以继承零到多个父接口
  • 接口中有零到多个常量定义
  • 接口中有零到多个抽象方法的定义
  • 接口中的属性是常量,即使定义时不添加修饰符,系统也会自动添加 public static final 修饰符
  • 接口中的方法都是抽象方法,即使定义时不添加修饰符,系统也会自动添加 public abstract 修饰符
  • 一个类可以实现一个或多个接口,实现接口使用 implements 关键字。Java 中一个类只能继承一个父类不够灵活,通过实现多个接口可以做补充
  • 可以用接口来引用一个实现了接口的类的对象
  • 接口在使用过程中通常与匿名内部类配合使用,匿名内部类是没有名字的内部类,多用于关注实现而不关注实现类的名称
//方法一
InterfaceNmae i = new InterfaceNmae (){
	public void methodname(){
		...
	}
};
i.methodname();

//方法二
new InterfaceNmae (){
	public void methodname(){
		...
	}
}.methodname();

UML:Unified Modeling Language,统一建模语言(标准建模语言),一个支持模型化和软件系统开发的图形化语言。
常用UML图

  • 用例图:The Use Case Diagram,用例图能够以可视化的方式,表达系统如何满足所收集的业务规则以及特定的用户需求等信息。
  • 序列图:The Sequence Diagram,序列图用于按照交互发生的一系列顺序,显示对象之间的这些交互。
  • 类图:The Class Diagram,UML类图、业务逻辑和所支持结构一同被用于定义全部的代码结构。
    UML建模工具:Visio、Rational Rose、PowerDesign等

异常:阻止当前方法方法或作用域继续执行的问题
Throwable 类:Error 类、Exception 类

  • Exception 分为 RuntimeException 和其他类型异常,RuntimeException 称为非检查异常,其他异常为检查异常。
  • RuntimeException举例:引用了一个空对象的属性或方法(空指针异常)、数组访问越界(数组下标越界异常)、错误的类型转换(类型转换异常)、算术运算异常等
    检查异常举例:文件异常(IOException)、SQL异常(SQLException)等,需要手动捕获处理。

处理异常:try-catch 以及 try-catch-finally
抛出异常后,程序会终止执行,程序的控制权将被移交给catch块中的异常处理程序进行处理。
编写多重catch块需要符合从异常子类到异常父类的规则,异常处理程序会就近寻找匹配的异常处理块。
finally块中放入异常处理块中必须执行的语句。

Java中的异常抛出:throw,声明将要抛出何种类型的异常(声明)

自定义异常:继承与Java异常中意义相近的异常,或者继承于所有异常的基类Exception

实际使用

  • 处理运行时异常时,采用逻辑去合理规避同时辅助 try-catch 处理
  • 在多重 catch 块后面,可以加一个 catch(Exception)来处理可能被遗漏的异常
  • 对于不确定的代码,也可以加上 try-catch 处理潜在的异常
  • 尽量去处理异常,切忌只是简单的调用printStackTrace() 去打印异常
  • 具体如何处理异常,要根据不同的业务需求和异常类型去决定
  • 尽量添加 finally 语句块去释放占用资源

集合:一种工具类,就像是一种容器,储存任意数量的具有共同属性的对象
集合的作用

  • 在类的内部对数据进行组织
  • 简单而快速地搜索大数量的条目
  • 有些集合接口提供了一系列排列有序的元素,并且可以在序列中间快速地插入或删除有关元素
  • 有些集合接口提供了映射关系,可以通过关键字(key)去快速查找对应的唯一对象,而这个关键字可以是任意类型

数组与集合

  • 数组的长度固定,集合长度可变
  • 数组只能通过数组下标访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象

集合框架

  • Collection 接口:
    • List:元素排列有序,并且可重复的集合。List 可以精确地控制每个元素的插入位置,或删除某个位置元素
      • ArrayList:数组序列,List 的一个重要实现类。ArrayList 底层由数组实现
    • Queue 接口:队列,排列有序,可重复
      • LinkedList:链表,同时也是 List 接口的实现类
    • Set 接口:集,无序,不可重复
      • HashSet:哈希集
  • Map:以 < key , value > 键值对的形式存储,key
    • HaspMap
posted @ 2017-03-13 13:09  永无乡seven  阅读(89)  评论(0编辑  收藏  举报