1、接口程序员
一、接口定义编程
接口是一系列方法的声明,是一些抽象的集合;数组
接口只有抽象方法没有方法的实现,且默认就是public权限;学习
接口并非类,编写接口的方式和类很类似,可是它们属于不一样的概念;spa
类描述对象的属性和方法,接口则包含类要实现的方法;设计
接口就是特殊的抽象类,即全部方法都是抽象方法的抽象类就是Java中的接口(interface);指针
接口没法被实例化,可是能够被实现。orm
二、接口的基本格式对象
【修饰符】interface 接口名 【extends 父接口名列表】继承
【public】【static】【final】常量;
【public】【abstract】方法;
接口名必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。通常状况下,要求首字母大写;
接口中没有变量,只能有public static final修饰的静态常量。三个修饰符能够省略;
2、类接口的实现
一、特色
类最多只能继承一个类,即单继承,而一个类却能够同时实现多个接口,实现类须要覆盖全部接口中的全部抽象方法,不然该类也必须声明为抽象类。
接口是抽象的,接口中没有任何具体方法和变量,因此接口不能进行实例化;
类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
二、实现接口的基本格式
[修饰符] class <类名> [extends 父类名] [implements 接口列表]{ }
implements 接口列表:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。
三、重写接口中声明的方法时,须要注意如下规则:
四、在实现接口的时候,也要注意一些规则:
例如: Interface3 extends ,Interface0, Interface1, interface……
3、接口与抽象类的区别
对比图:
Abstract class |
Interface |
|
属性 |
不用限制 |
静态常量 |
构造方法 |
无关紧要 |
没有 |
普通方法 |
能够有具体方法 |
必须是抽象方法 |
子类 |
单一继承 |
多重实现 |
一、抽象类中的方法能够有方法体,就是能实现方法的具体功能,可是接口中的方法不行;
二、 抽象类中的成员变量能够是各类类型的,而接口中的成员变量只能是 public static final 类型的;
三、接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是能够有静态代码块和静态方法;
四、一个类只能继承一个抽象类,而一个类却能够实现多个接口。
4、面向接口编程
一、接口是设计层面的概念,每每由设计师设计,将定义与实现分离
程序员实现接口,实现具体方法
常见的类设计结构:
接口
子接口 抽象类
具体类
二、面向接口编程
面向接口编程和面向对象编程并非平级的,它并非比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分;
或者说,它是面向对象编程体系中的思想精髓之一;
面向接口编程的意思是指在面向对象的系统中全部的类或者模块之间的交互是由接口完成的。
总结:
1.接口能够多继承
2.接口的方法声明必须是 public abstract 即使不写默认也是
3.接口里面不能包含方法具体实现
4.类实继承接口必须实现接口里申明的所有方法,除非该类是抽象类
5.类里面能够声明 public static final 修饰的变量
6.接口不能被实例化,可是能够被实现类建立
5、异常处理
一、异常概念
异常是不正常的事件,不是错误;
异常是指程序运行的过程当中,发生某些意外的事情,好比10除以0, 文件不存在等
二、错误
错误是很难处理的,好比内存溢出等,不可以经过异常处理机制来解决;
异常是程序中发生的不正常事件流,经过处理程序依然能够运行下去。可是错误是没法控制的,程序确定要中断.
三、异常体系
Throwable类有两个直接子类:Exception类、Error类。
Error表示错误,多是编译期错误或者系统错误,每每程序中并不处理。
Exception表示异常,是全部异常类的父类,是程序员所关心的。
四、异常种类
异常分为运行期异常和编译期异常两种
运行期异常:程序运行时抛除的异常,全部RuntimeException的子类都是运行期异常
-数学异常
-空指针异常
-数组下标越界
-................
编译期异常(Checked Exception):除去运行期的异常都是编译期异常,也称为检测异常
-IOException
-SQLException
-...............
6、捕获异常
一、使用 try 和 catch 关键字能够捕获异常。try/catch 代码块放在异常可能发生的地方。
try/catch代码块中的代码称为保护代码,使用 try/catch 的语法以下:
try{
可能会发生异常的代码
}catch(异常类型 引用名){
异常处理代码
}finally{
必须执行代码
}
运行流程(无异常状况)
try{
System.out.println("try");
}catch(Exception e) {
System.out.println("Exception");
} finally{
System.out.println("Finally");
}
运行流程(有异常状况)
try{
String demo = null; demo.split("a");
System.out.println("try");
}catch(Exception e) {
System.out.println("Exception");
e.printStackTrace();
} finally{
System.out.println("Finally");
}
二、finally与return
在try中没有异常的状况下try、catch、finally的执行顺序 try --- finally;
若是try中有异常,执行顺序是try --- catch --- finally;
若是try中没有异常而且try中有return这时候正常执行顺序是try ---- finally --- return;
若是try中有异常而且try中有return这时候正常执行顺序是try----catch---finally--- return;
若是try有异常,相应catch中有return,顺序是try---catch---finally---return。
7、抛出异常
throw关键字
一、 --关键字throw用于显式抛出异常
--抛除异常后处理
--使用try-catch捕获异常
--使用throws声明异常
语法
throw new 异常类构造方法;
例如:throw new Exception();
二、用于方法声明处,指出方法引起的异常。
能够声明多种异常类型,用逗号分开便可。
示例 public void test throws 异常1,异常2,异常3{ }
三、层层抛出异常
catch语句中,处理异常后,再次用throw抛出该异常对象
继续抛出异常的做用:使得调用该方法的方法,可以再一次捕获并处理异常
四、总结
--throw用于方法体中,用来抛出一个实际的异常对象,使用throw后,要么使用try catch捕获异常,要么使用throws声明异常;
--throws用于方法声明处,用来声明该方法可能发生的异常类型,能够是多个异常类型,用来强制调用该方法时处理这些异常;
--抽象方法也可使用throws,因此说并非有throw才有throws;
--若是使用throw关键字抛异常,必定不要使用Exception,不能很好标记异常类型;
--若是throw要抛出与业务逻辑有关的异常,须要使用自定义异常类,后续学习。
8、自定义异常
一、自定义异常就是本身定义的异常类,也就是API中的标准异常类的直接或间接的子类
做用:用自定义异常标记业务逻辑的异常,避免与标准异常混淆
基本语法 public class 异常类名 extends Exception{
public 异常类名(String msg){
super(msg);
}
}
自定义异常类中每每不写其余方法,只重载须要使用的构造方法。
二、在程序中使用自定义异常大体能够分为如下几步
--建立自定义异常类;
--在方法中经过throw 关键字抛出自定义异常;
--若是在当前抛出异常的方法中处理异常,可使用try-catch语句捕获并处理,不然在方法的声明处经过throws关键字声明该异常;
--调用throws声明该异常的方法时,使用try catch捕获自定义的异常类型,并在catch中进行处理。