Java学习笔记01-内部类&异常总结

来源:互联网 发布:店铺如何做淘宝客推广 编辑:程序博客网 时间:2024/05/16 19:04


一、内部类总结

内部类也叫嵌套类,外部类也叫宿主类。

1、内部类的主要作用:(1)内部类提供了更好地封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;(2)内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,但外部类不能访问内部类的实现细节;(3)某些情况下可简化书写.

2、内部类分非静态内部类、静态内部类、局部内部类(即在方法内定义)和匿名内部类,其中局部内部类和匿名内部类不属于外部类成员;若在外部类中要求访问非静态内部类成员,可以在外部类中建立内部类对象,访问格式为:
外部类名.内部类名 变量名= new外部类名().new内部类名();
(注意:如果内部类中有成员是静态的,则该类必须是静态的,而static修饰的内部类,不能访问外部非静态成员,因为内部类对象被创建时,外部类对象有可能没有创建。

3、匿名内部类适合创建那种只需要一次使用的类,或者当调用方法所传的方法参数是接口对象且此接口对象的接口方法不超过3个;因为匿名,所以不能定义构造器,且不能是抽象类。

4、局部内部类不能用static或访问控制符修饰,可以直接访问外部类成员,因为还保持引用,但不能访问它所在局部中的变量,除非该变量被final修饰。一个外部类中可以有两个以上的同名的局部内部类

二、异常总结

异常就是把问题封装成对象。良好的异常处理可以使程序有更好地容错性,程序更加健壮。异常分Checked异常和Runtime异常,只有java语言提供了Checked异常。

1、比较常见的运行时异常:

IndexOutOfBoundsException——角标越界异常

NumberFormatException——数字格式异常

ArithmeticException——算术运算异常

2、常见的访问异常信息的方法:

getMessage()——返回该异常的详细描述字符串

printStackTrace()——将该异常的跟踪栈信息打印到标准错误输出

printStackTrace(printStream s)——将异常锝跟踪栈信息打印到指定输出流(创建异常日志文件可以用它)

(注:以上有个细节,try中抛出来的异常对象是先赋给catch后面的异常参数,然后通过该参数来获得异常相关信息)

3、finally中存放必须一定要执行的代码,常用于关闭资源,尽量避免使用returnthrow等语句,

4、throwsthrow的区别:

1)throws使用在函数上(声明),后面跟的是异常类,可以有多个,逗号隔开;

2)throw使用在函数内(),后面跟的是异常对象。throw不要写代码,执行不到。

5、自定义异常类

自定义异常应该继承Exception基类或者RuntimeException类,一般自定义异常需要提供两个构造器:一个是无参数的构造器;另一个是带一个字符串参数的构造器,这个字符串将作为该异常对象的详细说明。例:

public class MyException extends Exception{public MyException(){}public MyException(String msg){super(msg); //该字符串将作为该异常对象的详细说明}}

6、注意:

1)子类在覆盖父类方法时,如果父类方法抛出异常A,那么子类重写方法时只能抛异常AA的的子类;

2)如果父类或接口中没有异常抛出,则子类覆盖父类方法也不能抛,如果有异常也只能try处理。


 

原创粉丝点击