JAVA 虚类简单问题。

问题描述

publicinterfaceActionListenerextendsEventListener{/***Invokedwhenanactionoccurs.*/publicvoidactionPerformed(ActionEvente);}publicabstractclassOutputActionextendsActionListener{publicOutputAction(ProgramInfoprogramInfo){this(programInfo,"出力");}publicabstractvoidactionPerformed(ActionEvente)throwsOfsException;}上面连个类。。第二给类编译的时候有错。Multiplemarkersatthisline-implementsjava.awt.event.ActionListener.actionPerformed-ExceptionOfsExceptionisnotcompatiblewiththrowsclauseinActionListener.actionPerformed(ActionEvent)WHY?

解决方案

解决方案二:
子类不能比父类抛出更多异常吧
解决方案三:
该回复于2010-12-14 13:33:53被版主删除
解决方案四:
我以前在jbuilder下用JDK1.4就是这么做的。现在用了ecliplise,JDK是1.6.就不行了。难道是JDK升级的原因吗。。。。。。
解决方案五:
子类方法覆盖(override)父类方法不可以声明抛出更多的检验异常(CheckedException),但是可以声明抛出更多的运行时异常(RuntimeExceptionorsubclassofRuntimeException)。这个和JDK升级没有关系,这是基本语法。
解决方案六:
引用3楼fength2004的回复:

我以前在jbuilder下用JDK1.4就是这么做的。现在用了ecliplise,JDK是1.6.就不行了。难道是JDK升级的原因吗。。。。。。

我不知道jdk1.4和1.6对异常的区别,但是我知道有下面一条规定:子类方法抛出的异常,应该是父类方法跑出异常的子类,或者子类方法不抛出异常。接口中没有跑出异常,子类抛出异常了肯定有问题,还有,接口不是应该用implements吗,LZ用extends编译也能通过?考虑下面的代码,假如:publicclassAextendsOutputAction{publicstaticvoidmain(String[]args){ActionListenerlistener=newA();try{listener.actionPerformed(ActionEvente);}catch(OfsExceptione){.......}}}OfsException这个异常LZ觉得能捕获到吗?
解决方案七:
引用4楼wingardium的回复:

子类方法覆盖(override)父类方法不可以声明抛出更多的检验异常(CheckedException),但是可以声明抛出更多的运行时异常(RuntimeExceptionorsubclassofRuntimeException)。这个和JDK升级没有关系,这是基本语法。

不一定是只有checkedexception吧。自定义的不都是runtimeexception吗
解决方案八:
引用6楼mtv0199的回复:

不一定是只有checkedexception吧。自定义的不都是runtimeexception吗

一定是只有checkedexception才有这种限制,你自己写个代码试试不就清楚了。自定义的是不是RuntimeException取决于你定义的异常继承了什么。

时间: 2024-08-21 15:48:53

JAVA 虚类简单问题。的相关文章

java设计模式之简单工厂模式_java

在编写一个计算器程序时,可以将业务逻辑和显示分离,业务逻辑封装为一个类(封装):如果要新添加一种运算,可以先创建一个Operation的基类,然后各种运算从Operation类继承,并实现GetResult()虚函数,这时添加新的运算只需要派生一个新的类,即不需要之前的运算参与编译.如何让计算器知道我是希望使用哪种运算呢?应该考虑单独的类来做这个创造实例的过程,这就是工厂.创建一个OperationFactory类,传入参数,函数createOperate就可以实例化出合适的对象. Java代码

java设计模式之简单工厂模式

在编写一个计算器程序时,可以将业务逻辑和显示分离,业务逻辑封装为一个类(封装):如果要新添加一种运算,可以先创建一个Operation的基类,然后各种运算从Operation类继承,并实现GetResult()虚函数,这时添加新的运算只需要派生一个新的类,即不需要之前的运算参与编译.如何让计算器知道我是希望使用哪种运算呢?应该考虑单独的类来做这个创造实例的过程,这就是工厂.创建一个OperationFactory类,传入参数,函数createOperate就可以实例化出合适的对象. Java代码

创建java只读类

完全可以创建自己的只读类,下面是个简单的例子:   //: Immutable1.java // Objects that cannot be modified // are immune to aliasing. public class Immutable1 { private int data; public Immutable1(int initVal) { data = initVal; } public int read() { return data; } public boole

在Java中用类装载框架控制类加载

摘要 通过构建一个能够把Java类装载隔离到一个指定的jar文件中的类装载组件容器框架,你可以确保运行时刻会装载你期望的组件版本. Java的类装载框架强有力且具有灵活性.它允许应用程序存取类库而不必链接到静态的"include"文件.代之的是,它能够从指定位置装载包含库类和资源的档案文件,例如由CLASSPATH环境变量所定义的目录和网络位置.由系统来动态地解析对类和资源的运行时刻参考,从而简化了更新和版本发行.然而,每一个库都有其自己的依赖性集合-并且由开发者和发布人员来保证他们的

PHP调用JAVA的WebService简单实例

 本篇文章主要是对PHP调用JAVA的WebService简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 使用PHP调用JAVA语言开发的WebService. 客户端提交两个String类型的参数,服务端返回一个对象类型. 服务端使用AXIS-1.4作为SOAP引擎.客户端为PHP5.2.9,使用NuSOAP作为SOAP引擎.   服务端   对象类    代码如下: import java.io.Serializable;   public class Person imp

Java File类的常用方法总结

 这篇文章主要介绍了Java File类的常用方法总结,本文讲解了File类的常用方法,并对一些方法给出了代码示例,需要的朋友可以参考下     Java File类的功能非常强大,利用Java基本上可以对文件进行所有的操作.本文将对Java File文件操作类进行详细地分析,并将File类中的常用方法进行简单介绍,有需要的Java开发者可以看一下. 构造函数 代码如下: public class FileDemo { public static void main(String[] args)

怎么用Java编写一个简单的登录系统?可以注册账号的那种

问题描述 怎么用Java编写一个简单的登录系统?可以注册账号的那种 数据库用的是MySQL,但Java操作方面的不知道怎么入手,求大神指点啊,有实例参考就更好了,谢谢 解决方案 import java.awt.event.*; import javax.swing.*; import java.awt.*; import java.awt.Container; import java.util.*; import java.sql.*; class Login extends JFrame im

java 某个类的几个对象,这些对象调用类中一个函数,是各自拥有自己的函数代码还是使用同一段代码?

问题描述 1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?2.java 继承中,子类从父类得到一些普通函数,这些函数的代码,是子类自己独自拥有一份还是和父类使用同一段函数代码.3.第一次发帖,积分什么的不会搞,貌似自己也没有积分,呵呵,大家包涵! 解决方案 引用1.java 某个类的几个对象,这些对象调用类中一个函数(普通的函数),是各自拥有自己的函数代码还是使用同一段代码?这几个对象调用的当然是同一段代码了.jvm中有一个ja

java匿名类-java当中如何区分匿名对象和匿名类

问题描述 java当中如何区分匿名对象和匿名类 java当中如何区分匿名对象和匿名类 有没有匿名方法这种概念 学了几个月了,感觉自己还是新手状态,很多基本概念还不是很清楚 解决方案 匿名对象: Person类: new Person(); 这就是一个匿名对象 匿名类: new Person(){ String name; }; 这就是一个匿名类 简单说就是,匿名对象还是一个对象,它必须有已经写好的成员变量.属性.方法 匿名类,在声明它的对象的时候,才对它进行代码的构造(封装它的成员变量.属性.方