1.异常(http://blog.csdn.net/hguisu/article/details/6155636)

  (1)异常的定义

    异常是指在运行期间发生的不正常情况,java中用类的形式对不正常情况进行了描述和封装,称为异常类。不同的问题用不同的类进行具体的描述。

问题很多,描述的类也很多,将其共性进行向上抽取,形成了异常体系。

  (2)异常的体系

        

    ①Error(程序不可处理的)
       是由jvm抛出的严重性问题,这种问题发生一般不针对性处理,直接修改程序。
    ②Exception(程序可以处理的)

  (3)Exception的分类

    ①编译时异常:Exception中除了子类RuntimeException的异常体系。

      这种问题一旦出现,希望在编译时就进行检测,让这种问题有对应的处理方式,都可以针对性的处理
    ②运行时异常:Exception中的RuntimeException体系。
      这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

      运行时异常的特点是Java编译器不会检查它,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。

  (4)throw和throws的区别

    ①throws使用在方法上,throw使用在函数内

    ②throws抛出的是异常类,可以抛出多个,用逗号隔开,throw抛出的是异常对象。

  (5)异常处理的机制

    ①抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。

    ②捕获异常:在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的

            异常类型相符时,即为合适 的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未

            找到合适 的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。

          具体格式是:

              try
              {
                //需要被检测异常的diamond
              }
              catch(异常类1 变量)//该变量用于接受发生的异常
              {
                //处理异常的代码
              }

              catch(异常类2 变量)//该变量用于接受发生的异常
              {
                //处理异常的代码
              }
              finally
              {
                //无论是否捕获或处理异常,一定会被执行的代码,当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。
              }

             

  (6)异常处理的原则

    ①函数内容如果抛出需要检测的异常,那么函数上必须要声明。否则必须在函数内用try catch捕捉,否则编译失败

    ②如果调用到了声明异常的函数,要么try catch要么throws,否则编译失败

    ③什么时候catch,什么时候throws呢?
      功能内容可以解决,用catch
      解决不了,用throws告诉调用者,由调用者解决

    ④一个功能如果抛出了多个异常,那么调用时,必须有对应的多个catch进行

      针对性处理。内部有几个需要检测的异常,就抛几个异常,抛出几个,就catch几个。

  (7)异常的注意事项

    ①子类在覆盖父类方法时,父类的方法如果抛出了异常

     那么子类的方法只能抛出父类的异常或者该异常的父类

    ②如果父类抛出多个异常,那么子类只能抛出父类异常的子集

     简单说,子类覆盖父类只能抛出父类的异常或者子类或者子集

    ③如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛,就只能try。

    ④多catch时,父类的catch放在最下面。

class LanPingException extends Exception
{LanPingException(String msg){super(msg);}
}class MaoYanException extends Exception
{MaoYanException(String msg){super(msg);}
}class NoPlanException extends Exception
{NoPlanException(String msg){super(msg);}
}class Computer
{private int state=1;public void run() throws LanPingException,MaoYanException{if(state==1){throw new LanPingException("电脑蓝屏啦!");}else if(state==2){throw new MaoYanException("电脑冒烟啦!");}}public void reset(){System.out.println("电脑重启");state=0;}
}class Teacher
{private String name;private Computer computer;Teacher(String name){this.name=name;computer=new Computer();}public void prelect()throws NoPlanException{try{computer.run();System.out.println(name+"讲课");}catch(LanPingException e){System.out.println(e.toString());computer.reset();prelect();}catch(MaoYanException e){System.out.println(e.toString());test();throw new NoPlanException("课时进度无法完成,原因:"+e.getMessage());}}public void test(){System.out.println("电脑坏了,同学们自习!");}
}class ExceptionDemo
{public static void main(String[] args){Teacher t=new Teacher("李老师");try{t.prelect();}catch(NoPlanException e){System.out.println(e.toString()+"......");System.out.println("换人");}}
}

2.包

  (1)对类文件进行分类管理,给类提供多层命名(名称)空间。

  (2)包与包之间的类进行访问,被访问的包中的类必须是public的,被访问的包中的类的方法也必须是public。

            public         protected       default(默认)     private

    同一类中      ok            ok            ok          ok
    同一包中       ok            ok            ok
    子类中          ok            ok
    不同包中       ok

  (3)导包原则:用到哪个类,就导入哪个类,一般不建议直接导包。     import 包名.*; //导入包中的所有的类。

  

  (4)jar包:将写好的一些类进行打包,再把这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性了,jar包一般都会放在lib目录下。

  

3.Object类 

  (1)Object类是不断抽取而来的,具备所有对象都具备的共性内容。

  (2)equals方法

    ①对于任何非空的参考值x和y ,当且仅当x和y引用相同的对象( x == y具有值true )时,该方法返回true 。

    ②一般都会覆盖equals方法,根据对象的特有内容,建立判断对象是否相同的依据。

  (3)hashCode方法

    返回对象的哈希码值,如果equals方法没有被覆盖,每次返回的值应相同。

  (4)getClass方法

    获取当前对象的字节码文件对象。

  (5)toString方法

    返回该对象的字符串表示。如果没有重写toString方法,那么输出来的默认的字符串内容是“类名+哈希编码”。

    

转载于:https://www.cnblogs.com/lydbky/p/8305902.html

015_面向对象_异常,包和Object类相关推荐

  1. java.lang包【Object类】

    基本描述: (1)Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入: (2)Object类是所有Java类的祖先.每个类都使用 Obje ...

  2. 09_Java面向对象_第9天(类、封装)_讲义

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...

  3. JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能

    JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...

  4. Java基础视频教程第10天_面向对象之异常2、包

    一.面向对象--异常- finally finally 代码块:定义一定执行的代码,通常用于关闭资源. 代码示例一: class NoException extends Exception {}cla ...

  5. python类方法和实例方法syntax errors_《Fluent Python》CH.11_面向对象_接口:从协议到抽象基类...

    主要内容 首先,本章说明抽象基类的常见用途:实现接口时作为超类使用 说明抽象基类如何检查具体子类是否符合接口定义,以及如何使 用注册机制声明一个类实现了某个接口,而不进行子类化操作 最后, 说明如何让 ...

  6. 复习Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节

    Object类_日期时间类_System类_StringBuilder_包装类以及各类的细节 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 Stri ...

  7. JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)

    第3节 面向对象高级 一.继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 ...

  8. JavaSE面向对象:继承、多态、Super、Object类、重写、static、final、静态成员、懒汉式、饿汉式、单例设计模式、初始化块、抽象类、抽象方法、接口

    感谢尚硅谷免费提供的视频 继承 ** 理解 ** 生活中的继承:子女继承了父母的财产或相貌或才华 java中的继承:一个类不用自己定义属性或方法,就已经具备了另一个类的属性和方法 把这种现象称为jav ...

  9. c++ 实现一个object类_说说Object类下面有几种方法呢?

    欢迎关注头条号:Java小野猫 今天说一道基础题型,不过很多人会忽略或者至少说不完整,但是面试时被问到的几率还是很大的. 面试题 Object有几种方法呢? Java语言是一种单继承结构语言,Java ...

最新文章

  1. 二十二、死锁的处理策略----预防死锁
  2. spring12:注解的方式实现di(依赖注入)
  3. 第 30 章 lvs-rrd
  4. JavaScript进阶5-学习笔记
  5. oracle导数据不释放内存,关于ORACLE数据库delete后释放空间问题
  6. python爬取公交车站数据_Python爬虫实例_城市公交网络站点数据的爬取方法
  7. Android中SQLiteOpenHelper类的onUpgrade方法浅谈
  8. 计算机图形直线分析,基本图形分析法:等腰三角形(一)
  9. python处理json数据(复杂的json转化成嵌套字典并处理)
  10. 直插式电阻电容封装与尺寸图…
  11. 睿智的目标检测37——TF2搭建SSD目标检测平台(tensorflow2)
  12. 梁宁增长思维30讲笔记 - 模式
  13. 【已解决】【V3版本】如何使用脚本关闭Win10自动更新服务并阻止其自动启动?
  14. 家庭局域网的组建(2台或2台以上)
  15. [译]eBay Elasticsearch性能调优实践
  16. r语言是高级编程语言_R编程语言介绍
  17. 【SGD深入理解】vanilia SGDmomentum SGD
  18. compare()和compareTo()区别
  19. C语言编写SSH终端
  20. Shell实战--文件安全性的保证

热门文章

  1. Spring中你不知道的注入方式
  2. 从“架构师书单”讲开去
  3. 大志非才不就,大才非学不成—博文资源汇总
  4. Hadoop教程(五):Flume、Sqoop、Pig、Hive、OOZIE
  5. Day 20: 斯坦福CoreNLP —— 用Java给Twitter进行情感分析
  6. C/C++求职宝典21个重点笔记(常考笔试面试点)
  7. 25 类:接口 抽象父类 多态 鸭子类型 格式化方法与析构方法 反射 异常处理 自定义异常 断言...
  8. 报告!我还有几个阿里同事也去了亚运会
  9. 全能系统监控工具dstat
  10. 使用二次封装的openStack发行版本网卡至少有2个