java基础———第十天

Object(基类)


定义:是所有对象的直接或者间接父类。
方法:
1、equals(){}//比较
2、toString(){}//转成字符串
3、hashcode(){}//对象的哈希地址值
4、getClass(){}//返回运行时类
………………



内部类


定义:将一个类定义在另一个类里,对里面的那个类就称为内部类。
特点:
1.内部类可以直接访问外部类中的成员,包括私有成员。
2.外部类要访问内部类中的成员,必须要建立内部类的对象。
3.当内部类定义在成员位置上时:
可被private static 等成员修饰符修饰,被static修饰的内部类只能访问外部类中的静态
成员。
4.当内部类定义在局部位置上时:
也可直接访问外部类中的成员,但不能被static 等成员修饰符所修饰。虽可以访问所
在局部中的成员变量,但该变量必须是被final所修饰的。。
访问格式:
<1>当定义在外部类的成员位置上,而且非私有,可以在外部类其他类中直接建立内部类对象访问
格式:外部类名.内部类名  变量名 = new 外部类().new内部类()
<2>在外部类其他类中,访问静态内部类的非静态成员:
格式:new 外部类.内部类().非静态成员();
<3>在外部类其他类中,访问静态内部了的静态成员:
格式:外部类.内部类.静态成员();
什么时候用?
在描述事物时,事物的内部还有事物,该事物就用内部类来描述。
匿名内部类
定义:就是内部类的简化写法。
前提:内部类实现或继承一个接口或者外部类。
格式:
new 外部类名或者接口名(){
覆盖类或者接口中的代码(也可自定义内容)
}
————(注:必须定义在方法里)
如:
class Demo {
	void show() {
		System.out.println("普通show方法");
	}
}


//通过继承创建一个匿名内部类
class External {
	public void fanlet() {
		new Demo(){
			void show(){
				System.out.println("覆盖后的show方法");
			}
		}.show();
	}
}


//通过接口创建匿名内部类
interface Inter {
	public void show1();
}


class Dmeo{
	public void fake() {
		//创建一个匿名内部类。
		new Inter() {
			public void show1() {
				System.out.println("fake");
			}
		};
	}
}

简单理解:就是建立一个带内容的外部类或者接口的子类匿名对象。
特点:
当定义的方法不超过3个时,方便了方法的调用,简化了书写。只可调用一次,只可
以使用父类中的方法。

异常
定义:
就是程序在运行时出现的不正常情况。
由来:
问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装
成对象。其实就是java中对不正常情况进行描述后的对象体系。

异常体系:


Throwable中的方法:

String getMessage() :获取异常信息,返回字符串。

String toString() :获取异常类名和异常信息,返回字符串。

void print stack Trace() :获取异常类名和异常信息及异常出现的位置。

void print stack Trace(Print Stream s) :通常同该方法将异常信息内容保存在日志文件中,以便查阅。

异常处理:

try{

    需要检测的代码;

}

catch(异常类  变量){

    异常处理代码;

}

finally{

    一定会执行的代码;(通常用来关闭资源)

}

Throws和Throw

1.throws用于标识函数暴露出来的异常,声明异常(像贴了标签的面包)

2.throw用于抛出异常对象,可用于抛出自定义异常对象。

3.throws用在函数上,后面跟异常类名。

4.throw用在函数内,后面跟异常对象。

注:的那个函数内部出现了throw抛出异常对象,那么就必须给出对应的处理动作,要么try.catch处理,要么在函数上

throws声明让调用者处理。

多异常处理:

1.用throws声明异常时,应声明具体的异常,这样处理可以更具体。

2.thorws在函数上可声明多个异常时,但声明了几个异常,就对应的要写几个catch块。不要定义多余的catch块,如果多个catch块的异常出现继承关系,父类异常catch块放在最下面。

自定义异常

由来:

因为项目中会出现特有的问题,而这些问题并未被java所描述并封装为对象,所以对于这些特有的问题可按照java对问题封装的思想,将特有的问题进行自定义的异常封装。

步骤:

1.建立一个类,继承Exception。

2.在功能会发生问题的地方,用throw抛出自定义异常类对象。

3.定义一个信息,因为父类已经把异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类

(通过super语句)。那么就可以直接通过getMessage方法获取自定义异常信息。

Exception异常的分类

1.编译时被检测的异常:包括Exception子类,RunntimeException以外的所有异常,如果在函数上声明,调用时没有处理方式,编译就会报错,而且这种异常有正对性的处理方式,是可处理的。

2.编译时不被检测的异常:包括RunntimeException以及它的所有子类,该异常也称为运行时异常。如果功能上声明了此异常。调用者可以不用任何处理方式也可以编译通过。如果发生异常就需程序停止,对代码进行修正。

细节:

<1>RunntimeException以及子类如果在函数中被throw抛出,可以不用在函数上声明。

<2>子类覆盖父类方法时,子类的方法必须抛出相同异常或者父类异常的子类。

<3>如果父类抛出了多个异常,子类覆盖父类时,只能抛出相同的异常或者它的子集,子类不能抛出父类没有的异常。

<4>如果被覆盖的方法没有异常抛出,那么子类的方法绝对不可以抛出异常。如果子类内部有异常发生,那么子类只能try,不能throws。

<5>当try对应多个catch时,最顶层的异常要放在最下面。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章