例: class Test { public int devide(int x, int y)throws DevidedByMinusException,ArithmeticException { int result = x/y; return x/y; } } class DevidedByMinusException extends Exception { int devisor; public DevidedByMinusException(String msg,int devisor) { super(msg); this.devisor=devisor; } public int getDevisor() { return devisor; } } public class TestException { public static void main(String [] args) { try { //int result = new Test().devide( 3, 0 ); int result = new Test().devide( 3, -1 ); //int result = new Test().devide( 3, 1 ); System.out.println(the result is + result ); } catch(DevidedByMinusException e) { System.out.println(program is running into+ DevideByMinusException); System.out.println(e.getMessage()); System.out.println(the devisor is +e. getDevisor()); } 运行结果: class A { int aa=10; void callme() { System.out.println(Inside A’s callme() method a=+aa); } } class B extends A { String aa=China; void callme() { System.out.println(Inside B’s callme() method aa=+aa); } } public class C { public static void main(String args[]) {/*父类对象创建时引用了子类的构造方法, 创建的实际上是子类的对象。*/ A a=new B(); /* 这一行运行时,显示的是子类的callme()结果 */ a.callme(); System.out.println(aa=+a.aa); System.out.println(aa=+((B)a).aa); } } 上例说明: a为A类型的变量,用new建立A类型的子 类B的一个实例,并将其引用存储到a中。 编译时a.callme()指向父类A的成员方法, 而运行时,则动态绑定到子类B中的成员方法。故程序将调用B的callme()方法。 运行的多态性,体现了面向对象程序设 计的代码复用。 运行结果: Inside B’s callme() method aa=China aa=10 aa=China 总结 原则上,所引用的对象实例,必须含有欲转换的类类型的实例,也就是说,所引用的对象实例的类类型,必须是欲转换成的类、或它的子孙类。 (3) instanceof操作符 可以用判断是否一个类实现了某个接口,也可以用它来判断一个实例对象是否属于一个类。其语法格式为: 对象 instanceof 类(或接口) 返回类型是布尔型:true或false public static void CallA(A a) { if( a instanceof B) { B b=new B(); b.func1(); b.func2(); b.func3(); } } 2. Object类 Java中有
原创力文档

文档评论(0)