Java学习笔记——异常中的继承问题

<span style="font-size:18px;">
</span>

/*

这个例子是关于异常在继承中的问题,当BException继承AException时,父类抛出AException,那么子类只能抛出AException或BException,而不能抛出其他异常,因为子类不能比父类还“有问题”。下面是例子:

*/

<span style="font-size:18px;">class AException extends Exception
{
}

class BException extends AException
{
}

class Fu
{
	public void show() throws AException
	{

	}
}

class Zi extends Fu
{
	public void show() throws BException //或者抛出 BException
	{

	}
}

class ExceptionDemo3

{
	public static void main(String[] args)
	{
		try{
		Fu f = new Fu();
		f.show();
		}catch(AException e)//只能抛出AException
		{

		}
		try{
		Zi z = new Zi();
		z.show();
		}catch(AException e) //当子类中方法抛出BException时这也要抛出BException
		{

		}

		try{
		Fu f = new Zi();
		f.show();
		}catch(AException e)//只能抛出AException,因为多态
		{

		}
	}
}</span>
时间: 2024-10-27 10:47:15

Java学习笔记——异常中的继承问题的相关文章

疯狂Java学习笔记(83)----------继承详解

有一段时间没有更新博客了,感觉挺愧疚的,这两天忙着考试,实在没有办法,只能放一放了,还好自己复习的还不错,闲的没事,跟两篇博文,来能弥补一下空虚! 言归正传! 什么是继承? 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可. 多个类可以称为子类,单独这个类称为父类.超类或者基类. 子类可以直接访问父类中的非私有的属性和行为. 通过 extends 关键字让类与类之间产生继承关系. class SubDemo extends Dem

Java学习笔记(九)&mdash;&mdash;继承

一.继承 1.概念: 继承是类于类之间的关系,是一种"is a "的关系 Ps: Java是单继承 2.优势: (1)子类直接拥有父类的所有属性和方法(除了privata) (2)实现代码复用 3.语法规则: 4.一个demo (1)动物类 package com.cnblogs; public class Animal { public int age; public String name; public void eat() { System.out.println("

Java学习笔记----异常

这是从别的网站盗来的图. 异常分为两种: Error:这是程序无法处理的错误 Exception:这是异常,又分为两种: 处理异常的方法: 抛出异常: throws 举个例子,汽车出现故障了,汽车自己没办法处理,就只能交给人去处理 throw出现在函数体里面,这个算是自定义了一个自己的异常类.可以输出自己所定义的异常. 注意:这个throw也是需要throws MyException的.一开始我以为不用.所以出错了 代码: package com.ehealth.exc; import java

JAVA学习笔记-异常机制

常见异常分类: ArithmeticException                               - 如试图除以0 NullPointerException                               - 当程序访问一个空对象的成员变量或方法. ClassCastException                                - 类型强制转换错误 ArrayIndexOutOfBoundsException           - 访问的元素下

Java学习笔记--HashMap中使用object做key的问题【转载】

在HashMap中,如果需要使用多个属性组合作为key,可以将这几个属性组合成一个对象作为key.但是存在的问题是,要做get时,往往没办法保存当初put操作时的key object的reference,此时,需要让key object覆盖如下hashCode()和equals(Object obj)的实现.sample code如下: public class TestKeyObject { private long id; private int type; public TestKeyOb

JAVA学习笔记(三十七)- 创建继承Thread的线程

创建继承Thread的线程 /* * 创建线程方式一:继承自Thread * 步骤: * 1.自定义类,继承自Thread类 * 2.重写run()方法 * 3.创建类的实例,即创建一个线程 * 4.调用线程的start()方法,作用:启动线程.调用run()方法 * * * Thread的run方法,用于存储线程要执行的代码,必须重写此方法 * 启动线程时会自动调用此方法 */ class Demo extends Thread{ @Override public void run() { f

Java学习笔记——动态代理

所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记--RMI"中的远程代理,其中客户端服务对象就是一个远程服务对象的代理,这个代理可以使得客户在操作时感觉像在操作本地对象一样,远程对象对于客户是透明的.我们可以看出这里的远程代理,是在程序中事先写好的,而本节我们要讨论的远程代理,是由JVM根据反射机制,在程序运行时动态生成的.(以上是本人的理解,如果有不正确的地

java学习笔记(三)java中的修饰符abstract、static与final

一.四种访问级别的访问范围 访问级别 访问修饰符 同类 同包 子类 不同的包 公开 public 受保护 protected 默认 没有访问修饰符 私有的 private 二.使用abstract修饰符需要遵守的语法规则 1.抽象类中可以没有抽象方法,但是包含抽象方法的类必须定义为抽象类,即用abstract修饰: 2.抽象类跟抽象方法不能被final修饰符修饰: 3.抽象类中可以有非抽象方法,因为继承抽象类的子类必须重写父类中所有的抽象方法,因此抽象类中不能有抽象构造方法和抽象静态方法: 4.

Java学习笔记之继承

一.继承的基础 在Java术语中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass). 举例说明: 1 class Box 2 { 3 public double width; 4 public double height; 5 public double depth; 6 7 //重载构造方法 8 public Box(Box ob) 9 { 10 width = ob.width; 11 height = ob.height; 12 depth = ob.dep