黑马程序员--内部访问类、异常

来源:互联网 发布:java吧百度贴吧 编辑:程序博客网 时间:2024/06/01 21:13

 ---------android培训java培训、期待与您交流! ----------    

 

1.内部访问类规则  

   class Outer{

         ......

         class Inner{

              ...

         }

    }

  (1) 内部类可以直接访问外部类中的成员,包括私有(通常省略Outer.this)

  (2) 外部类访问内部类必须建立内部类的实例

  (3) 内部类定义规则: 当一个类需要直接访问另一个类的成员时,这时可以定义内部类

  (4) static修饰的成员变量,不能修饰局部变量

 

2.静态内部类:只能直接访问外部类中的静态成员(即静态只能访问静态)

   (1) 外部类访问静态内部类的非静态成员:new Outer.Inner().function();

   (2) 外部类访问静态内部类的静态成员: Outer.Inner.function();

   (3) 当内部类中定义了静态成员,那么该内部类必须是静态的,否则编译不通过

 

3.匿名内部类:是内部类的简写形式,没有名字的内部类

   (1) 在定义匿名内部类时,必须继承一个类(Object类也可)或实现一个接口

   (2) 匿名内部类的格式:

         class Outer{

                  private String name;

                  new 父类或接口 {

                         子类的内容/可以覆盖父类方法 ;

                        //public void show(){

                       //        ... 

                       //  }

                        ...

                  };//.show();

              //红色部分是一个匿名内部类,由此可知匿名内部类是一个匿名子类对象

         }

   (3) 匿名内部类主要是用于简化代码,它里面的方法不超过3个.

 

4.异常(Throwable):程序运行时出现不正常的情况

   (1) 异常由来:我们在处理现实生活中的事物时,不可避免的会产生各种问题,这些问题相对程序来说就是异常.

   (2) 异常分类:异常可分为严重的和非严重的两类.

          严重的通过Error类描述,非严重的异常通过Exception类描述 

   (3) 重点掌握Exception类处理异常 (要么catch,要么throws)

           Exception类又可分运行时异常和非运行时异常

           RuntimeExcption是Exception类中的特殊异常,调用者可以不处理,而可以编译通过,但是在运行时会抛出异常

   (4) 对多异常的处理:使用catch捕捉特定异常,捕捉异常的顺序由某段抛异常的代码决定,但父类Exception类必须在所有catch最后

   (5) 自定义异常类

        步骤: ①继承Exception类或RuntimeException类或其他异常类

                  ②可以自定义异常信息,只需在自定义异常的构造函数中调用super(String message)即可

   public class FushuException extends Exception {//自定义一个负数异常
             public FushuException(String msg){
                             super(msg);
             }

   }
   class ExceptionTest{
             public int oper(int a,int b)throws FushuException{
                           if(b<0){
                                throw new FushuException(" / by FuShu");
                           }
                       return a/b;
             }
   }

   (6) Throws和Throw的区别

          Throws 在函数后(小括号与大括号之间),后面跟的是异常类(可多个)

          Throw 在函数内,后面跟的是异常对象

   (7) 小结

         编译时被检测的异常(若不处理,无法通过编译)

         编译时不被检测的异常(运行时异常,RuntimeException及子类),运行时让程序停下,修正代码。

 

5.异常——finally

   (1) try-catch块、try-finally块、try-catch-finally块

   (2) finally是始终会执行的块,唯一不执行的情况System.exit(0),finally通常用来关闭资源

         public class FinallyDemo {

         /**
          * @param args
          */
         public static void main(String[] args) {
             ExceptionTest et=new ExceptionTest();
             try{
                    et.clac(1, 0);
                    System.out.println("try");
              }catch(OwnDefindException e){
                    System.out.println(e.toString());
                    return;
              }finally{
                   System.out.println("finally");
          }
             System.out.println("over");
 }

}

 

   (3) 异常覆盖

         ① 子类覆盖父类方法时,如果父类抛出异常,子类只能抛该类异常或该类异常子类.

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

         ③如果父类或接口方法中没有异常,那么子类不可以抛异常,只能catch住

 

6.异常总结

   (1) 异常体系:Throwable(Error、Exception)

   (2) 异常体系的特点:异常体系中的所有类具备可抛性,亦由Throws、throw操作

   (3) 所有throw抛出的异常,可catch可Throws,若未处理该异常必须是RuntimeException类及子类

   (4) throw new Exception()代码后不能定义语句,和break、continue、return类似,否则编译失败

 

7.包与包之间的访问

   (1) 被访问的包中的类及成员需要被public修饰

   (2) 不同包中的子类还可以直接访问父类中被protected修饰的成员

   (3) 导入包:关键字import:为了简化类名的书写而使用的关键字

   (4) Java压缩包

      ① 方便项目的携带,方便于使用,只要才classpath设置jar路径即可。数据库驱动,SSH框架是以jar包体现的。

      ② jar包压缩的格式:jar –cf haha.jar pack1 pack2… haha代表jar包的文件名,pack1是要压缩的文件1 文件2

      ③ jar包查看内容:jar –tf haha.jar

      ④ 把jar包放到classpath文件路径下可以直接运行jar包内部的类

 

 ---------android培训java培训、期待与您交流! ----------    

 

 

 

 

原创粉丝点击