软件构造期末复习3
- 接口与抽象类
抽象类、 接口不能实例化,但是抽象类可以有构造方法,接口不行
接口中的方法必须是抽象的(只定义不能实现),但是在java 1.8中可以定义default方法(默认方法)体
接口成员变量默认为public static final,必须赋初值,不能被修改;成员方法都是public、abstract的、JDK 1.8中允许使用static关键字修饰一个方法,并提供实现,称为接口静态方法。接口静态方法只能通过接口调用(接口名.静态方法名)。
抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static修饰,必须以分号结尾,不带花括号。
总之,随着java发展,抽象类越来越接近抽象类了。
-
异常
-
checked
通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。检查异常发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。
常见的有:
- ClassNotFoundException
- SQLException
- IOException(包括FileNotFoundException、EOFException等等)
-
unchecked
通常是如果一切正常的话本不该发生的异常。发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。
常见的有:
- arrayIndexOutOfBoundException使用集合进行数组索引越界
- ArithmeticException 程序中用数字除以0时
- ClassCastException 类型转换时,错误的强制类型转换
- NullPointerException 程序中使用了空对象进行操作时
- OutOfBoundException
- NegativeArraySizeException
- NumberFormatException
只需记住几个checked异常,做题目时就能分辨checked与unchecked异常。
-
-
正则表达式
x ::= y z 空格表示连接
x ::= y*
x ::= y | z
x ::= y? 可选 y或者空串
x ::= y+
x ::= [a-c] that is x ::= [abc] 集合 x is a or b or c
x ::= [^a-c] 取反 x不包含abc
java的正则表达式与形式语言的正则表达式不完全一样,还是要小心的
还要注意生成式与 正则表达式区别
-
设计模式总结
-
创建型模式
-
工厂模式
定义一个用于创建对象的接口,让子类决定实例化哪个产品类对象。工厂方法使一个产品类的实例化延迟到其工厂的子类。
包含:抽象工厂(Abstract Factory)、具体工厂(ConcreteFactory)、抽象产品(Product)、具体产品(ConcreteProduct)
-
-
结构型模式
-
适配器模式
将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。
包含:目标(Target)接口、适配者(Adaptee)类、适配器(Adapter)类
-
装饰器模式
指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。
包含:抽象构件(Component)、具体构件(Concrete Component)、抽象装饰(Decorator)、具体装饰(ConcreteDecorator)
-
-
行为型模式
-
策略模式
该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。
包含:抽象策略(Strategy)、具体策略(Concrete Strategy)、环境(Context)
-
模板(框架)模式
定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。
包含:抽象类(Abstract Class)、具体子类
抽象类包含:模板方法、基本方法
-
访客模式
封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。
包含:抽象访问者(Visitor)、具体访问者(ConcreteVisitor)、抽象元素(Element)、具体元素(ConcreteElement)、对象结构(Object Structure)
-
迭代器模式
提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
包含:抽象聚合(Aggregate)、具体聚合(ConcreteAggregate)、抽象迭代器(Iterator)、具体迭代器(Concretelterator)
根据课程与考试要求,掌握这7种模式的思想与组成。
-
-