面向对象——Object类、异常学习笔记

来源:互联网 发布:李雨桐和薛之谦 知乎 编辑:程序博客网 时间:2024/04/29 02:19

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

equals和==的异同:

1、共同点:都可以做比较,返回值是boolean;

2、区别:

(1)==是比较运算符,既可以比较基本数据类型,也可以比较引用数据类型,基本数据类型比较的是值,引用数据类型比较的是地址值。

(2)equals方法只能比较引用数据类型,(因为是方法,所以由对象来调用)equals方法在没有重写之前,比较的是地址值,底层依赖的是==号,但是比较地址值

是没有意义的,我们需要重写equals方法

hashCode方法:返回该对象的哈希值,一般会覆盖此方法

getClass方法:返回此object的运行时类

toString方法:返回该对象的字符串表示,一般会覆盖此方法


异常:在运行时发生的不正常情况

在java 中用累得形式对不正常的情况进行了描述和封装,描述不正常情况的类,就称为异常类。以前正常流程代码和问题处理代码相结合,现在将正常流程

和问题处理代码分离,提高阅读性。其实异常就是Java通过面向对象的思想将问题封装成了对象,用异常类对其进行了描述。不同的问题用不同的类进行描述

比如角标越界,空指针等等。问题很多,意味着描述的类也很多。将其共性向上抽取,形成了异常体系。最终问题(不正常情况)分成两大类:

Throwable:无论是error,还是异常,问题发生就应该可以抛出,让调用者知道并处理,该体系的特点在于Throwable及其所有的子类都具有可抛性

可抛性其实是通过两个关键字来体现:Throws Throw凡是可以被这两个关键字所操作的类和对象都具有可抛性

1、一般不可处理的,Error

特点:是由jvm抛出的严重性问题,这种问题发生一般不针对性处理,直接修改程序

2、可以处理的,Exception


该体系的特点:子类的后缀名都是用其父类名作为后缀,阅读性很强

自定义异常:例如,自定义负数角标异常

注意:要定义一个异常类,必须要让其继承异常体系,因为只有异常体系的子类才有被抛出性。才可以被两个关键字操作


异常的分类:

1、编译时被检测异常:只要是Exception和其子类都是,除了特殊子类RuntimeException体系,这种问题一旦出现,希望在编译时就进行检测,让这种问题

有对应的处理方式。这样的问题都可以针对性的处理。

2、编译时不检测异常(运行时异常):就是Exception中的RuntimeException和其子类

这种问题发生,无法让功能继续,运算无法进行。更多是因为调用的原因导致的或者引发了内部状态的改变导致的,

那么这种问题一般不处理,直接编译通过,在运行时,让调用者调用时的程序强制停止,让调用者对代码进行修正。

因此自定义异常时,要么继承Exception,要么继承RuntimeException。


throws和throw的区别

1、throws使用在函数上,throw使用在函数内

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


异常捕捉:


异常多catch情况:如果多catch情况,其中有捕获父类异常对象,那么该catch模块,一定要放在最下面



异常处理原则:


finally代码块:通常用于关闭资源


异常应用:


异常的注意事项:

1,子类在覆盖父类方法时,父类的方法如果抛出了异常,
那么子类的方法只能抛出父类的异常或者该异常的子类。

Exception
|--A
|--B
|--C

class Fu
{
void show()throws A
{}
}
class Zi extends Fu
{
void show()throws A//B或者不抛异常
{

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

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


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

interface  Inter
{
void function();
}


class D implements Inter
{
public void function()//这时就只能try
{}
}

0 0
原创粉丝点击