黑马程序员_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处理。Error和exception的子类名都的以父类名作为后缀。
异常处理:try{需要检测的代码}
catch(异常类变量){异常处理方式}
finally{一定执行的代码}
finally中定义的通常是关闭资源代码,因为资源必须要被释放。Finally中只有执行到System.out.println(0); finally才不会执行。
throwable中的方法:getMessage()获取异常信息,返回字符串。
toString ()获取异常类名和异常信息,返回字符串。
printStackTrace()获取异常类名和异常信息,以及异常出现在程序中的位置,返回值void。Jvm的默认异常处理机制,就是在调用printStackTrace方法,打印异常的堆栈的跟踪信息。
printStackTrace(PrintStream s)将异常内容保存在日志文件中,以便查阅。
多异常处理:声明异常时声明具体的异常,处理可以更具体。
原则:有几个声明异常,就对应几个catch块,不定义多余的catch块,若多个catch块的宜昌市继承关系,将父类异常catch块放最下方。
自定义异常
当函数内部出现了throw抛出异常对象,那么就必须要给对应的异常经行处理动作:在内部try、catch处理或在函数上声明让调用者处理。一般函数内部出现异常,函数上就要声明。
自定义异常必须是自定义类继承Exception。原因是异常体系有个特点:异常类和异常对象都具有可抛性,可抛性是throwable这个体系中的独有特点,只有这个体系中的类和对象才可以被抛throws和throw操作。
Throws和throw区别:
Throws使用在函数上,throw使用在汉书内;throws后跟异常类,throw后跟异常对象。
RunTimeException运行异常:exception中特殊子类异常。如果在函数内抛出该一场,函数上可以不用声明,编译可以通过。如果在函数上声明了异常,调用者可以不用处理,编译通过。
如果函数声明了异常,调用者要进行处理,方式为throws或try。
自定义异常时,如果该异常发生,无法继续进行运算,可以让该自定义异常继承RunTimeException。
自定义异常的定义类继承Exception或RunTimeException是为了让该自定义累具备可抛性,也让该类具备操作异常的共性方法。
异常分两种:
1.编译时被检测的异常。该异常编译时没有处理(throws或try),编译失败该异常被标识可以被处理。
2.编译时未被检测的异常,即运行异常(RunTimeException以及其子类)。该异常的发生,最好不处理,让程序停止,对代码进行修正。
Catch用于处理异常。如果没有catch就代表异常没有被处理,若该异常是检测异常,就必须声明catch中抛出。
当捕获到的异常,本功能处理不了可以继续在catch中抛出
try{throws new AException();}
catch(AException e)
{throw e;}
如果该异常处理不了,但并不属于该功能出现的异常。可以将异常转换后,再抛出和该功能相关的异常。或者异常可以处理,当需要将异常产生的和本功能相关的问题提供出去,让调用者知道并处理。也可以将捕获的异常处理后,转换成新的异常。
try{throw new AException();}
catch(AException e)
{throw new BException();}
异常的好处:将问题进行封装;将正确代码与问题代码相分离,方便阅读。
异常类在子父类覆盖中的体现:
1. 子类在覆盖父类时,若父类的方法抛出异常,该子类的覆盖方法必须抛出父类的异常或该异常的子类。
2. 如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。
3. 如果父类或接口的方法中没有异常抛出,那么子类在覆盖该方法时不可以抛出异常。若子类方法发生了异常,就必须要经行try处理,绝对不能抛。
异常是对问题的描述,将问题进行对象的封装。
异常体系:throwable
|——Error
|——Exception
|——RunTimeException
体系的特点:异常体系中的所有类以及建立的对象都具备可抛性。也就是都可以被throw和throws关键字所造作。只有异常体系具有此特点。
--------------------- android培训、java培训、java学习型技术博客、期待与您交流! ----------------------
详情请查看:http://edu.csdn.net/heima
- 黑马程序员_java基础知识学习总结四
- 黑马程序员_java基础知识学习总结一
- 黑马程序员_java基础知识学习总结三
- 黑马程序员_Java基础知识总结
- 黑马程序员_java基础知识总结
- 黑马程序员_java基础知识学习
- 黑马程序员_java基础知识学习总结二
- 黑马程序员_java基础知识(四)IO流
- 黑马程序员_Java基础知识
- 黑马程序员_java基础知识
- 黑马程序员_java基础知识
- 黑马程序员_Java基础知识
- 黑马程序员_Java基础知识
- 黑马程序员_java基础知识
- 黑马程序员_Java基础知识
- 黑马程序员_java基础知识
- 黑马程序员_java基础知识
- 黑马程序员_java基础知识
- C++:STL标准入门汇总
- 关于数据在内存中存储有点让我不解
- 一个小工具
- <c:forEach>标签的使用
- PHP基础学习之date与gmdate的区别
- 黑马程序员_java基础知识学习总结四
- <c:out>
- IT精英们,您把握好 “分寸”了吗?
- 敏捷开发“松结对编程”实践之一:人员结构篇(大型研发团队,学习型团队,139团队,师徒制度)
- poj2240 水题 熟悉map用法及string用法 Frolyd算法
- Oracle复制表的sql语句
- GDI对象句柄表
- EPLAN Electric P8 v1.9.5 仿真不启动
- no suitable Driver