码迷,mamicode.com
首页 > 编程语言 > 详细

JavaStuNote 5

时间:2015-07-21 12:51:51      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:接口   java   异常   

接口 (interface)

 

   一个抽象类,所有的方法都是抽象的,所有方法的public, 我们把这样的类叫做极度抽象类,是最干瘪的类。

   

public abstract class A {

public abstract void method1();

public abstract void method2();

public abstract void method3();

}

 

public interface A {

void method1();

void method2();

void method3();

}

   

极度抽象类可以缩写为接口。那么,所有接口的方法都是public abstract.

 

 

类创建的过程

接口 (interface)  à  abstract class  à  可实例化类

 

创建实例       创建子类(继承)     作为引用变量数据类型

普通类         Yes             Yes                  Yes

Final类         Yes             No                  Yes

abstract类     no              Yes                  Yes

接口           no              yes                   yes

 

接口创建子类:

 1. Extends        继承了接口,而得到结果还是接口。

      一个类没有实现接口方法的计划,而是想继续增加接口方法,必须使用extends关键字来表示继承。

 2.   implements    

      一个类如果有对接口方法做实现的计划,必须使用implements关键字来继承接口。

 

接口是一个特殊的类,一个类实现了接口,最终成为可实例化类,那么类必须包含接口中所定义的所有方法。

 

一个接口引用变量可以指向一个实现了这个接口的类对象,但只能调用这个对象中接口部分。

 

接口的用途:

 

  现实生活中,没有血缘关系的对象之间往往有共同的行为和动作,但每个对象的行为和动作的具体内容是不一样的,比如士兵, 每个士兵都会射击,擒拿格斗等行为,但有的人是神枪手,而有的老是不及格,那么也就是说大家都有这个动作,但动作的实现个人各自不同。

   以上是现实生活中的具体情况,为了更好的模拟现实生活,语言必须演化,来满足这个要求,极度抽象类在语法层面上满足了这样要求,被重视起来,并最终得到了一个新的名字,接口。

   

接口在某种程度上与多态有同样的效果,能够写出可高度复用的代码。


1. 异常与错误

a. 错误(error)

语法错误, 逻辑错误 

      错误是系统的设计缺陷,必须返回软件公司修复。

 

b. 异常(exception)

   现代软件在运行过程中,往往容易受到周边因素的影响,比如网络意外中断,磁盘文件被误删除,用户录入了不正确的数据,导致软件运行中断,我们把这种不是因为软件自身原因,而是软件运行环境的意外,导致的运行停止,我们把其叫做异常。

 

   异常不是软件本身的问题,软件本身没有语法和逻辑问题,而是周边环境发生了意外,是软件设计者始料不及的。对于异常而言,软件开发者必须做好恰当的异常处理工作,比如当系统发现网络意外终止,应把程序挂起,提示用户异常原因,引导用户解决异常,解决完毕后,将积极重新尝试未完成操作,使程序能够得以继续运行。

 

 

2. 异常处理几点说明

     异常对象在系统运行过程中自动创建,当然所创建的对象类型是根据不同类型的异常而有差异的,系统会把出现异常的具体信息以及导致异常的原因写在这个对象中。

 

异常对象主要有两个属性:

     a. detailMessage   该异常的具体信息

     b. cause           说明了导致这个异常的原因。

                    

 异常位置的跟踪和定位:

     e. printStackTrace();  

     由于try块中可能有多条语句,异常爆发了,对象被抛出了,到底是那条语句导致的呢?

  printStackTrace()会详细的告诉你对应的位置。

 

  异常被捕获处理后,异常try…catch..结构后的语句将继续运行,程序不会中止。

  但是try块中发生异常的语句之后的语句将不再运行。

 

1. try

       try块中一般放置编程人员认为最可能抛出异常的高危语句,try块中的语句如果抛出了异常,那么该语句之后的语句将不再运行(try块中). 该语句抛出的异常,将经过catch模组过滤后,被处理或者无法处理,被抛出方法。

       为了提高程序,请尽量减少try块体积,有些不必要的语句,不要放在try块中。

       

2. Catch块的级联

  由于一个try块中的语句,可能会抛出多种异常,对于程序员来说,应该尽早对其有预期,部署多个catch块对异常进行捕获处理,以免造成程序停机。

   但可抛出的异常种类实在难以预测,难免有漏网之鱼,所以,一般来说,我们catch级联块的最后会安排一个“万能”异常捕获者,来抓捕所有的漏网之鱼。

   Java.lang.Exception是万能捕获者,其是所有异常类的父类,根据父类引用变量可以指向所有子类对象的原则,其一般放在catch级联块最后一环对遗漏的异常进行捕获。 但其处理缺乏针对性,较为粗糙,建议具体的异常还是用具体的捕获者来捕获处理。

   Exception catch模组应避免放在级联块的第一个,否则后头的catch模组因代码无法到达,将全部失效,编译器将敏锐地发现这个问题,导致编译失败。

 

3. Finally

 

   坚强的finally块,其只怕System.exit(0), 无论try块中有异常,无异常,有无漏网之鱼均可运行,也不怕try中中途return.

   

   为了有效的释放在try语句运行过程中申请的资源,finally块为此而成。

 

   一般语句结构如下:

a. try…catch…finally

b. try…finally..

c. try..catch…

 

 

异常的基本处理原则:

   一个方法内的异常,要么抛出,要么捕获。如果本方法不适合处理,则可抛给上级方法处理,层层上报,直到合适的方法处理掉这个异常。

 

4. throwthrows

throw 抛出

通常情况下,是由系统帮助我们创建对应的异常对象,然后抛出。

在有些特定情况下,我们也可以手动创建异常对象,手动抛出!

 

if(b<0) throw new RuntimeException("b不能为负数!",null);

 

一个方法的最后部分将用来声明这个方法会抛出什么样的异常,以方便调用该方法的方法对其做好提前准备。一个方法可能抛出的异常不止一个,所以必须用throws

 

Xxxx methodName throws AException,BException…..

 

如果一个类中会抛出异常,该异常并不在这个类中被捕获,就必须做好方法的异常声明工作。

 

一个异常要么被捕获处理,要么被抛出,如被抛出方法,则方法必须声明异常信息。

 

任何一个方法,将默认在其签名上写上 throws RuntimeException;

 

 

In the following code, which lines will be printed on the standard output?

public class Test

{

public void method1(int x) throws Exception

{

try

{

method2(x); 

System.out.println("Checkpoint 1");

}

finally

{

System.out.println("Checkpoint 2");

}

System.out.println("Checkpoint 3");

}

public void method2(int x) throws Exception

{

if (x < 0)

{

throw new NegativeArraySizeException();

}

}

static public void main(String[] args) throws Exception

{

Test t = new Test();

t.method1(-55);

System.out.println("Checkpoint 4");

}

}

A. Checkpoint 1

B. Checkpoint 2

C. Checkpoint 3

D. Checkpoint 4

 

5. 运行时异常和检查异常

 

a. 运行时异常(Runtime Exception)

所有运行时异常 extends RuntimeException.

运行时异常是在程序运行过程中爆发的异常,其相对影响面小,问题不严重,一般不影响程序继续运行。

运行时异常无需捕获,自动抛出,也无需throws声明。

 

b. 检查异常  (checked Exception)

检查异常 extends Exception

其要么try…catch..捕获,要么在方法签名末尾显式申明抛出。


pic:技术分享


技术分享


key:

右击 Source 

可以 override/Implement Methods 

Generate getters and setters

 

Public boolean equals (Object obj) {

If(obj = = null) return false ;

If(obj instanceof Apple

}

 

 

 

接口与抽象类类似,可理解为终极抽象类

接口是可以继承的

技术分享


版权声明:本文为博主原创文章,未经博主允许不得转载。

JavaStuNote 5

标签:接口   java   异常   

原文地址:http://blog.csdn.net/hhooong/article/details/46983283

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!