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

----------------------- 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();}

catch AException 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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值