黑马程序员_java基础知识学习总结四

来源:互联网 发布:个人网络循环贷款 编辑:程序博客网 时间:2024/05/21 17:21

----------------------- android培训java培训java学习型技术博客、期待与您交流!-----------------------

接口:interface{}

一个特殊抽象类,当抽象类中的方法都是抽像的,那么该类可以通过接口来表示。

接口中的成员都有固定修饰符:

成员常量:public static final  成员方法:public abstract

接口中的成员都是public的,类与接口关系是实现,关键字implements,接口不可以创建对象,因为有抽象方法需要被子类实现,子类对接口中的抽象方法全部覆盖后子类才可以实例化,否则子类就的一个抽象类。接口可以被多实现。类可以继承一个类的同时实现多个接口,接口与接口之间可以有继承关系。

多态:某一类事物存在的多种体现形态。也就是父类引用指向子类对象,或父类引用接收自己的子类对象。多态的出现提高程序的扩展性,但只能用父类的引用访问父类中的成员。多态的前提是类与类之间有关系,要么是继承要么是实现。

多态自始至终都是子类对象做着变化。类型强制转换:多态中不能父类对象转成子类类型,能转换的是父类对象转换成子类对像时,该应用可以被提升,也可以被强制转换。

多态中成员函数特点:

编译时:参阅引用型变量所属的类中是否有调用方法。有,编译通过;没有就编译失败。

运行时:参阅对象所属的类中是否有调用方法。子类如果有,运行子类;子类对象没有,运行父类

简而言之:成员函数在多态调用时,编译看左边,运行看右边

多态中成员变量特点:

无论编译和运行,都参考左边,即参考引用型变量所属的类。

        多态中,静态成员函数特点:无论编译和运行,都参考左边

        内部类:将一个类定义在另一个类中,这个类就叫内部类。也称内置类或嵌套类。

内部类的访问规则:1.内部类可直接访问外部类中的成员,包括私有。

2.外部类要访问内部类必须建立内部类对象。

之所以内部类可访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this

内部类可以被私有,当内部类在外部类成员上时。

当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中建立内部类对象。                               格式:外部类名.内部类名.变量名= new 外部类对象.内部类对象

当内部类在成员位置上,就可以被成员修饰符来修饰。

例如:private:将内部类在外部类中进行封装。

          Static:当内部类被静态修饰,只能直接访问外部类中的static成员,访问出现局限性。

当内部类中定义了静态成员,该内部类必须是静态;当外部类中的静态方法访问内部类时,内部类也必须是静态的。

内部类定义在局部时,不可以被成员修饰符所修饰,可以直接访问外部类中的成员,因为持有对外部类中的引用,但不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量。

匿名内部类就是内部类的简化格式。定义匿名内部类的前提是内部类必须继承一个类或实现接口。匿名内部类就是建立一个带内容的外部类或者接口的子类匿名对象。

格式:new外部类或接口名(){覆盖类或接口中的代码}

异常:java对不正常情况进行描述后的对象体现

异常体系throwable下有两类:

Error类:严重错误,不对其处理;exception类:不是严重错误,使用针对习惯处理方式进行处理,通过try catch finally处理。Errorexception的子类名都的以父类名作为后缀。

异常处理:try{需要检测的代码}

                  catch(异常类变量){异常处理方式}

                  finally{一定执行的代码}

finally中定义的通常是关闭资源代码,因为资源必须要被释放。Finally中只有执行到System.out.println(0); finally才不会执行。

throwable中的方法:getMessage()获取异常信息,返回字符串。

toString ()获取异常类名和异常信息,返回字符串。

printStackTrace()获取异常类名和异常信息,以及异常出现在程序中的位置,返回值voidJvm的默认异常处理机制,就是在调用printStackTrace方法,打印异常的堆栈的跟踪信息。

printStackTracePrintStream s)将异常内容保存在日志文件中,以便查阅。                              

多异常处理:声明异常时声明具体的异常,处理可以更具体。

原则:有几个声明异常,就对应几个catch块,不定义多余的catch块,若多个catch块的宜昌市继承关系,将父类异常catch块放最下方。

自定义异常

当函数内部出现了throw抛出异常对象,那么就必须要给对应的异常经行处理动作:在内部trycatch处理或在函数上声明让调用者处理。一般函数内部出现异常,函数上就要声明。

自定义异常必须是自定义类继承Exception。原因是异常体系有个特点:异常类和异常对象都具有可抛性,可抛性是throwable这个体系中的独有特点,只有这个体系中的类和对象才可以被抛throwsthrow操作。

Throwsthrow区别:

Throws使用在函数上,throw使用在汉书内;throws后跟异常类,throw后跟异常对象。

RunTimeException运行异常:exception中特殊子类异常。如果在函数内抛出该一场,函数上可以不用声明,编译可以通过。如果在函数上声明了异常,调用者可以不用处理,编译通过。

如果函数声明了异常,调用者要进行处理,方式为throwstry

自定义异常时,如果该异常发生,无法继续进行运算,可以让该自定义异常继承RunTimeException

自定义异常的定义类继承ExceptionRunTimeException是为了让该自定义累具备可抛性,也让该类具备操作异常的共性方法。

异常分两种:

1.编译时被检测的异常。该异常编译时没有处理(throwstry),编译失败该异常被标识可以被处理。

2.编译时未被检测的异常,即运行异常(RunTimeException以及其子类)。该异常的发生,最好不处理,让程序停止,对代码进行修正。

Catch用于处理异常。如果没有catch就代表异常没有被处理,若该异常是检测异常,就必须声明catch中抛出。

当捕获到的异常,本功能处理不了可以继续在catch中抛出

trythrows new  AException();}

catchAException e

throw e;}

如果该异常处理不了,但并不属于该功能出现的异常。可以将异常转换后,再抛出和该功能相关的异常。或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,让调用者知道并处理。也可以将捕获的异常处理后,转换成新的异常。

trythrow new  AException();}

catchAException e

throw new BException();}

异常的好处:将问题进行封装;将正确代码与问题代码相分离,方便阅读。

异常类在子父类覆盖中的体现:

1.         子类在覆盖父类时,若父类的方法抛出异常,该子类的覆盖方法必须抛出父类的异常或该异常的子类。

2.         如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。

3.         如果父类或接口的方法中没有异常抛出,那么子类在覆盖该方法时不可以抛出异常。若子类方法发生了异常,就必须要经行try处理,绝对不能抛。

异常是对问题的描述,将问题进行对象的封装。

异常体系:throwable

                            |——Error

                           |——Exception

                                               |——RunTimeException

体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。也就是都可以被throwthrows关键字所造作。只有异常体系具有此特点。

 

--------------------- android培训java培训java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima

 

原创粉丝点击