异常:是对问题的描述,将问题进行对象封装,
异常的体系:
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以后, 类名可以直接简写,不在需要 包名.类名 的形式书写了.
面向对象好像终于学完了,好多还是不是很懂,不过时间不等人,只能边自学后面的边继续看面向对象的有关知识了.