zoukankan      html  css  js  c++  java
  • Java基础笔记-异常总结,包

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

    异常的体系:

    Throwable:

      1.Error

      2.Exception

        1.RuntimeException

    异常体系的特点:

    异常体系中的所有类以及建立的对象都具备可抛性。
    可以被throw和throws关键字所操作,只有异常体系具备这个特点。

    throw和throws的用法区别:

    throw定义在函数内,用于抛出异常对象。

    throws定义在函数上,用于抛出异常类,可以抛出多个并用逗号隔开。

    当函数内容有throw抛出异常对象,并未进行trycatch处理时,必须要在函数上throws声明,否则会编译失败。
    RuntimeException除外,当函数内如果抛出的是RuntimeExcpetion异常,函数上可以不用声明。

    异常处理语句:
    try
    {
       需要被检测的代码;
    }
    catch ()
    {
       处理异常的代码;
    }
    finally
    {
       一定会执行的代码;
    }

    finally:一定会被执行的代码,通常定义的是用于关闭资源的代码.

    特殊情况:当在finally语句之前执行了System.exit(0); 语句时,finally语句不会被执行.

    自定义异常:

     定义类继承Exception或者RuntimeException  

    1.为了让自定义类具备可抛性。  

    2.让该类具备操作异常的共性方法。

    当要定义自定义异常的信息时,可以使用父类已经定义好的功能.将异常信息传递给父类的构造函数。

    class xxxException extends Exception

     {   

      xxxException(String message)   

      {    

        super(message);   

      }

     }

    自定义异常:根据Java中的面向对象思想,将程序中出现的特有问题进行封装。

    在子父类覆盖时:
     1.子类抛出的异常必须是父类的异常的子类或者子集。
     2.如果父类或者接口没有异常抛出时,子类覆盖出现异常,只能trycatch处理而不能用throw/throws抛出。

      1 /*
      2 求圆,和长方形的面积
      3 */
      4 class NoValueException extends RuntimeException //Exception
      5 {
      6     //private String message;
      7         NoValueException(String message)
      8         {
      9                 super(message);        
     10         }
     11 }
     12 
     13 /*
     14 abstract class Shape
     15 {
     16      abstract void getArea();
     17 }
     18 
     19 class rec extends Shape
     20 */
     21 //接口也是一种抽象方法
     22 interface Shape
     23 {
     24     void getArea();
     25 }
     26 class Rec implements Shape 
     27 {
     28         private int len,wid;
     29         Rec(int len,int wid) //throws NoValueException
     30         {
     31             if(len<=0 ||wid<=0)
     32                     throw new NoValueException("len,wid的值非法");
     33             /*
     34                 {
     35                     System.out.println("len,wid值非法");
     36                 }
     37             */
     38                 
     39                     this.len = len;
     40                     this.wid = wid; 
     41                 
     42         }
     43         public void getArea()
     44         {
     45             System.out.println("长方形的面积是:"+len*wid);
     46         }
     47 }
     48 class Circle implements Shape
     49 {
     50         private double radius;
     51         public static  final double PI = 3.14;
     52         Circle(double radius) throws NoValueException
     53         {
     54                 if(radius<=0)
     55                         throw new NoValueException("出现了非法值的情况");    
     56                         
     57                 this.radius = radius;
     58         }
     59         public void getArea()
     60         {
     61                 System.out.println("圆的面积是:"+radius*radius*PI);
     62         }
     63     
     64 }
     65 
     66 class ExceptionTest2
     67 {
     68     public static void main(String args[])
     69     {
     70         /*
     71         //继承的是Exception时.
     72                 try
     73                 {
     74                         Rec r = new Rec(-3,4);    
     75                         r.getArea();
     76                 }
     77                         catch(NoValueException e)
     78                 {
     79                         System.out.println(e.toString());
     80                 }    
     81         */        
     82         //继承的是RuntimeException时,可以不需要进行try操作.出现异常程序会停止.
     83                 Rec r = new Rec(3,4);    
     84                 r.getArea();
     85                 
     86                 
     87                 try
     88                 {
     89                         Circle c = new Circle(-3);
     90                         c.getArea();
     91                 }
     92                 catch(NoValueException e)
     93                 {
     94                         System.out.println(e.toString());
     95                 }
     96                 
     97 
     98         
     99         
    100     }
    101         
    102 }

    包:package

    作用:让源文件与类文件相分离.

    格式:

    package 包名; //该定义语句要定义在代码的第一行.(最上方)

    有了包名以后,类名的全称就是: 包名.类名 (该类要在包上)

    当包中的类相互继承以后,可以访问被protected修饰的属性和方法.包与包之间可以使用的权限有两种:public和protected

    四种权限之间能否能访问如下所示:

            public    protected    default(默认权限)    private

    同一个类中    Ok      Ok        Ok          Ok

    同一个包中    Ok      Ok        Ok          No

    子类       Ok      Ok        No          No

    不同包中       Ok      No        No          No

    注意: 在一个java文件中,不能有两个或者两个以上的公有类或者接口.

    导入:import关键字.

    作用,用于简化类名的书写.当import以后, 类名可以直接简写,不在需要 包名.类名 的形式书写了.

    面向对象好像终于学完了,好多还是不是很懂,不过时间不等人,只能边自学后面的边继续看面向对象的有关知识了.

  • 相关阅读:
    能量项链
    开学前最后一天信奥赛一本通重刷日记
    重刷信奥赛一本通日记-3
    重刷信奥赛一本通日记-2
    重刷信奥赛一本通日记-1
    第二次考试题解way
    第一次考试题解
    第一次考试感言
    「HNOI2012」矿场搭建
    「HAOI2006」受欢迎的牛
  • 原文地址:https://www.cnblogs.com/jerryho/p/4520962.html
Copyright © 2011-2022 走看看