异常在子父类覆盖中的体现

异常在子父类覆盖中的体现

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

2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。

3,如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。

如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。

class AException extends Exception
{
}

class BException extends AException
{
}

class CException extends Exception
{
}

/*
Exception 
	|--AException
		|--BException
	|--CException
*/
class Fu
{
	void show()throws AException
	{
	
	}
}

class Test
{
	void function(Fu f)
	{
		try
		{
			f.show();
		}
		catch (AException e)
		{

		}
		
	}
}


class Zi extends Fu
{
	void show()throws CException//子类只能抛出父类定义的异常,在这里编译不能通过
	{
		
	}
}


class  
{
	public static void main(String[] args) 
	{
		Test t = new Test();
		t.function(new Zi());
	}
}

异常:练习

/*有一个圆形和长方形。
都可以获取面积。对于面积如果出现非法的数值,视为是获取面积出现问题。
问题通过异常来表示。
现有对这个程序进行基本设计。*/
package tan.tian;
//自定义异常信息:非法值异常
class InvalidValueException extends RuntimeException{
	public InvalidValueException(String msg) {
		super(msg);
	}
}
interface  Shape{
	void getArea();
}

class Rec implements Shape{
	private int len,wid;
	public Rec(int len,int wid) {
		this.len=len;
		this.wid=wid;
	}
	@Override
	public void getArea() {
		if(len<=0||wid<=0) {
			throw new InvalidValueException("边长出现非法值!");
		}
		System.out.println(len*wid);
		
	}
}

class Circle implements Shape{
	public final static double PI=3.14;
	int radius;
	public Circle(int radius) {
		if(radius<=0){
			throw new InvalidValueException("圆的的半径为非法数值");
		}
		this.radius=radius;
	}
	@Override
	public void getArea() {
	
		System.out.println(radius*radius*PI);
	}
}


public class ExceptionTest1 {
	public static void main(String[] args) {
		Rec r=new Rec(4, 5);
		r.getArea();
		
		Circle c=new Circle(-2);
		c.getArea();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值