之地。 与方法的覆盖不同,重载不是子类对父类同名方法的重新定义,而是在一个类中定义了同名的不同方法。
4、 什么是多态?面向对象程序设计为什么要引人多态的特性?使用多态有什么优点?
解:一个类中存在多个同名的方法,称为多态。把抽象功能和目的相同,而具体实现
因不同情况而异的方法命名为同名方法,符合面向对象程序设计中抽象、提升概念,封装、
隐藏细节的特点,从而提高了程序的简洁性和可读性,降低了类和程序模块直接的相互耦
合和依赖。
5、 父类对象与子类对象相互转化的条件是什么?如何实现它们的相互转化?
解:一个子类对象也可以被合法地视为一个父类的对象,即一个父类对象的引用,其
指向的内存单元可能实际上是一个子类的对象。在这种情况下,可以使用强制类型转换,
将父类对象的引用转换成实际的子类对象的引用
6、 一个类如何实现接口?实现某接口的类是否一定要重载该接口中的所有抽象
方法?
解:使用关键字implements可以定义类实现某接口。实现某接口的类如果不是抽
象类,则需要通过重载来实现该接口中的所有抽象方法;如果这个类是抽象类,则它可以
不必实现该接口中的所有抽象方法。
7、 为某研究所编写一个通用程序,用来计算每一种交通工具运行1000公里所需的时间,已知每种交通工具的参数都是3个整数A、B、C的表达式。现有两种工具:Car007 和Plane,其中Car007 的速度运算公式为:A*B/C,Plane 的速度运算公式为:A+B+C。需要编写三类:
ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未来如果增加第3种交通工具的时候,不必修改以前的任何程序,只需要编写新的交通工具的程序。其运行过程如下,从命令行输入ComputeTime的四个参数,第一个是交通工具的类型,第二、三、四个参数分别时整数A、B、C,举例如下:
计算Plane的时间:\ 计算Car007的时间:\ 如果第3种交通工具为Ship,则只需要编写Ship.java,运行时输入:\
提示:充分利用接口的概念,接口对象充当参数。
实例化一个对象的另外一种办法:Class.forName(str).newInstance();例如需要实例化一个Plane对象的话,则只要调用
Class.forName(\便可。
解:ComputerTime.java 源程序: import pkg1.pkg2.*; import java.lang.*;
public class ComputerTime
{ public static void main(String args[])
{ System.out.println(\交通工具: \ System.out.println(\参数A: \ System.out.println(\参数B: \ System.out.println(\参数C: \ double A=Double.parseDouble(args[1]); double B=Double.parseDouble(args[2]); double C=Double.parseDouble(args[3]); double v,t;
try { Common d=(Common) Class.forName(\
v=d.runtimer(A,B,C); t=1000/v;
System.out.println(\平均速度: \ System.out.println(\运行时间:\小时\ }
catch(Exception e)
{ System.out.println(\ }
} }
包pkg1中Car007.java的源程序: package pkg1;
import pkg1.pkg2.*;
public class Car007 implements Common
{ public double runtimer(double A,double B,double C) { System.out.println(\ return A*B/C; } }
包pkg1中Plane.java的源程序: package pkg1;
import pkg1.pkg2.*;
public class Plane implements Common {
public double runtimer(double A,double B,double C) {
return A+B+C; } }
包pkg2中Common.java的源程序: package pkg1.pkg2;
public interface Common
{ double runtimer(double A,double B,double C); }
8、编写求解几何图形(如直线、三角形,矩型,圆,多边型)的周长,面积的应用程序,要求用到继承和接口等技术。
解:// Solution of drawings as triangle,rectangle,circle
import java.io.*;
// interface
interface getProperty
{
double Pi=3.1415926;
double getArea();
double getCircum();
String getName(); } //
class mpoint {
static int i=0;
double x,y;
String strmpoint;
mpoint(double a,double b)
{
this.x=a;
this.y=b;
}
double getX(){
return x;
}
double getY()
{
return y;
}
String getString()
{
i+=1;
strmpoint=\ // name of a mpoint;
return strmpoint;
} }
//disp class
class disp {
double area;
double circum;
String drawingName;
disp(double a, double b, String ss){
this.area=a;
this.circum=b;
this.drawingName=ss;
}