多态的例子以及多态和异常之间的一些细节

本文介绍了Java中多态的概念及其实现方式,并通过示例展示了如何在多态的基础上处理异常。文章强调了子类方法抛出的异常类型不能超过父类方法所声明的异常范围。


这是多态最普通的定义的方法:

class A{
	public void f(){
		
	}
}
class BB extends A{
	public void f(){
		System.out.printf("BBBBBBB\n");
	}
} 
class Test{
	public void m(A aa){//可以看出这里的参数是父类,但是在下面的调用的时候可以使用子类的参数,说明了一个函数可以实现多个
		//功能,不过多态只能对共有的方法进行调用,如果是新的方法就不可以。
		aa.f();
	}
}
public class divideZero {
	public static void main(String[] args){
		Test test = new Test();
		BB bb = new BB();
		test.m(bb);
	}
}

下面是多态和异常的结合:
class M extends Exception{
	
}
class N extends Exception{
	
}
class Q extends Exception{
	
}

class A {
	public void f() throws M,N{
		
	}
}
class BB extends A {
	public void f() throws M{
		System.out.printf("BBBBBBB\n");
	}
} 
class Test{
	public void m(A aa){//可以看出这里的参数是父类,但是在下面的调用的时候可以使用子类的参数,说明了一个函数可以实现多个
		//功能,不过多态只能对共有的方法进行调用,如果是新的方法就不可以。
		try{
			aa.f();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}
public class divideZero {
	public static void main(String[] args){
		Test test = new Test();
		BB bb = new BB();
		test.m(bb);
	}
}

note:
可以看到上面B类f()方法对A类的方法的重写的时候(注意这里并不是真正意义上的重写,而是有两个函数,具体看郝斌的视频),f()只能throws M,N或M或N,
因此子类throws的范围不能超过父类,其实非常的好理解,因为在写下面的异常语句的时候,下面的异常是对A进行操作的。
但是因为多态的原因,可以赋予子类的值,因此子类throws 的范围不能超过父类。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值