软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件开发专栏>>java>>正文
java基础知识问答—java入门与加深二 (1)
文章出处:赛迪论坛 作者:E剑 发布时间:2006-01-25

31 throw和throws有什么不同?  

  答:throws用于声明一个方法会抛出哪些异常。而throw是在方法体中实际执行抛出异常的动作。

  如果你在方法中throw一个异常,却没有在方法声明中声明之,编译器会报错。  

  注意Error和RuntimeException的子类是例外,无需特别声明。  

  32 什么是异常?  

  答:异常最早在Ada语言中引入,用于在程序中动态处理错误并恢复。  

  你可以在方法中拦截底层异常并处理之,也可以抛给更高层的模块去处理。  

  你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下:

  try

  {

  ...... //以下是可能发生异常的代码

  ...... //异常被抛出,执行流程中断并转向拦截代码。

  ......

  }

  catch(Exception1 e) //如果Exception1是Exception2的子类并要做特别处理,应排在前面

  {

  //发生Exception1时被该段拦截

  }

  catch(Exception2 e)

  {

  //发生Exception2时被该段拦截

  }

  finally //这是可选的

  {

  //无论异常是否发生,均执行此段代码

  }

  33 final和finally有什么不同?  

  答:final请见26。finally用于异常机制,参见32。  

  五、 面向对象篇  

  34 extends和implements有什么不同?  

  答:extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。

  interface的引入是为了部分地提供多继承的功能。  

  在interface中只需声明方法头,而将方法体留给实现的class来做。  

  这些实现的class的实例完全可以当作interface的实例来对待。  

  有趣的是在interface之间也可以声明为extends(单继承)的关系。  

  35 java怎么实现多继承?  

  答:java不支持显式的多继承。  

  因为在显式多继承的语言例如c++中,会出现子类被迫声明祖先虚基类构造函数的问题,而这是违反面向对象的封装性原则的。  

  java提供了interface和implements关键字来部分地实现多继承。参见34。  

  36 abstract是什么?  

  答:被声明为abstract的方法无需给出方法体,留给子类来实现。  

  而如果一个类中有abstract方法,那么这个类也必须声明为abstract。

    被声明为abstract的类无法实例化,尽管它可以定义构造方法供子类使用。  

  37 public,protected,private有什么不同?  

  答:这些关键字用于声明类和成员的可见性。public成员可以被任何类访问,protected成员限于自己和子类访问,private成员限于自己访问。  

  Java还提供了第四种的默认可见性,当没有任何public,protected,private修饰时.  

  类可以用public或默认来修饰。

  38 Override和Overload有什么不同?  

  答:Override是指父类和子类之间方法的继承关系,这些方法有着相同的名称和参数类型。  

  Overload是指同一个类中不同方法(可以在子类也可以在父类中定义)间的关系,这些方法有着相同的名称和不同的参数类型。  

  39 我继承了一个方法,但现在我想调用在父类中定义的方法。  

  答:用super.xxx()可以在子类中调用父类方法。  

  40 我想在子类的构造方法中调用父类的构造方法,该怎么办?  

  答:在子类构造方法的第一行调用super(...)即可。  

  41 我在同一个类中定义了好几个构造方法并且想在一个构造方法中调用另一个。

  答:在构造方法第一行调用this(...)。  

  42 我没有定义构造方法会怎么样?  

  答:自动获得一个无参数的构造方法。  

  43 我调用无参数的构造方法失败了。  

  答:如果你至少定义了一个构造方法,就不再有自动提供的无参数的构造方法了。  

  你需要显式定义一个无参数的构造方法。  

  44 我该怎么定义类似于C++中的析构方法(destructor)?  

  答:提供一个void finalize()方法。在Garbarge Collector回收该对象时会调用该方法。  

  注意实际上你很难判断一个对象会在什么时候被回收。作者从未感到需要提供该方法。 


站内搜索
相关文章
◎MVC设计模式
◎Struts行为测试框架StrutsTestCase实战
◎Java学习之路:不走弯路,就是捷径
◎JRockit JVM 中的内存泄漏检测
◎基于JDK5.0的一些Thread总结
◎消除内存泄漏
◎POJO应用架构:Spring与EJB 3.0的对比
◎构建高性能J2EE应用的10个技巧
◎有可能挑战Java开发优势的四种技术
◎六种异常处理的陋习
◎多处理器平台上J2EE应用的内存争用
◎MVC模式在j2me项目中的应用(二)
◎MVC模式在j2me项目中的应用(一)
◎J2ME程序开发新手入门九大要点
◎精通J2ME中的Hello World
◎浅析Java多线程程序设计机制
◎J2EE架构学习者的6个最佳实践
◎Tomcat在Windows 2000下的安装配制
◎KJava在移动设备中的应用
◎Java-IDE环境
◎理解Java应用服务器的七种武器
◎Java嵌入式开发之二
◎Java嵌入式开发之一
◎Java学习从入门到精通
◎凤凰浴火JBuilder2006新功能赏析
◎UML技术在基于Web的应用系统中的应用
◎Oracle9i 数据库控制文件
◎J2EE Server下的第一个EJB程序
◎Java CORBA入门
◎CORBA 入门
◎Struts 框架
◎Struts标记库
◎ejb入门
◎Java语言编码规范
◎J2EE从零开始之J2EE平台简介
◎J2EE从零开始之测试平台安装
◎J2EE从零开始之准备工作
◎J2EE从零开始之EJB开发过程
◎J2EE从零开始之企业Beans(EJB)简介
◎J2EE从零开始之EJB(1)
◎J2EE从零开始之EJB(2)
◎J2EE从零开始之实体EJB
热门文章
◎Java学习从入门到精通
◎Windows下JAVA环境变量的设置祥解
◎Struts标记库
◎Struts 框架
◎Java学习之路:不走弯路,就是捷径
◎JAVA基础测试中异常问题汇总
◎凤凰浴火JBuilder2006新功能赏析
◎hibernate应用配置说明-middlegen和hbm2java的配置
◎java经典网址
◎J2EE从零开始之J2EE平台简介
◎MVC设计模式
◎将数据库操作封装到Javabean
◎J2EE从零开始之EJB(1)
◎ejb入门
◎Java常见问题集锦
◎J2EE从零开始之EJB开发过程
◎Java语言编码规范
◎消除内存泄漏
◎Hibernate如何配置操作多个数据库
◎J2EE从零开始之EJB(2)
◎J2EE从零开始之测试平台安装
◎以小博大Java性能优化技巧集锦
◎java经典问题:传值还是传引用
◎java基础知识问答—java入门与加深二 (2)
◎Oracle9i 数据库控制文件
◎J2EE从零开始之实体EJB
◎Struts行为测试框架StrutsTestCase实战
◎用Java实现磁盘文件以大对象二进制文件形式存储到Oracle数据库
◎J2EE从零开始之准备工作
◎Tomcat在Windows 2000下的安装配制
◎J2EE从零开始之企业Beans(EJB)简介
◎Java CORBA入门
◎J2EE Server下的第一个EJB程序
◎六种异常处理的陋习
◎应用Java技术实现数据库应用系统
◎JRockit JVM 中的内存泄漏检测
◎J2EE架构学习者的6个最佳实践
◎UML技术在基于Web的应用系统中的应用
◎Java平台上的CRM系统
◎Java-IDE环境
◎POJO应用架构:Spring与EJB 3.0的对比
◎有可能挑战Java开发优势的四种技术
◎J2ME程序开发新手入门九大要点
◎CORBA 入门
◎Java嵌入式开发之一
◎KJava在移动设备中的应用
◎理解Java应用服务器的七种武器
◎构建高性能J2EE应用的10个技巧
◎基于JDK5.0的一些Thread总结
◎MVC模式在j2me项目中的应用(一)

Google提供的广告