Java程序设计各章习题及其答案(3)

2019-01-26 20:19

tt.display(23); tt.a=9; text1.a=4; tt.b=3; } }

运行结果: static int a=5 int b=6

static display: int b=0 static display: int b=23

6、下面给出了一个矩形类Rectangle,其中含有多个构造方法。上机编译并运行

此程序,观察运行结果,体会其中不同构造方法的设计和使用。 import java.io.*;

class Rectangle //矩形类 {

private int width; //矩形的宽度 private int length; //矩形的长度

Rectangle() //矩形的不带参数的构造函数,缺省的给出长(30)和宽(20) {

length=30;width=20; }

Rectangle(int l,int w) //矩形的带参数的构造函数 {

length=l;width=w; }

Rectangle(Rectangle r) //此构造方法以另一个Rectangle作为参数 {

width=r.width(); //通过对象调用函数并附值给相应变量 length=r.length(); }

int width() //返回宽度 {

return width; }

int length() //返回长度 {

return length; } }

public class CRctngle {

public static void main (String args[ ]) {

Rectangle x1=new Rectangle(); //声明类的对象并实例化 Rectangle x2=new Rectangle(50,40); //声明类的对象并初始化 Rectangle x3=new Rectangle(x1); System.out.println(x1.length()); System.out.println(x1.width()); System.out.println(x2.length()); System.out.println(x2.width()); System.out.println(x3.length()); System.out.println(x3.width()); } }

运行结果:30 20 50 40 30 20

体会:此程序中共定义了3个构造方法:Rectangle()、Rectangle(int l,int w) 、

Rectangle(Rectangle r) ,其中Rectangle()是没有参数的,Rectangle(int l,int w)以常数作为参数,Rectangle(Rectangle r)是以对象最为参数。构造函数的调用实在用new运算符创建类对象是由系统自动完成的,构造函数的参数传递和形实结合也是由系统在调用的同时自动完成。 7、下面给出了一个计算阶乘的类Fact和使用该类计算阶乘的程序Check1。编译并运行该程序,观察运行结果,体会方法的参数的传递和返回值的用法。在调用时改变参数的个数和类型,看看编译时会得到什么信息。 class Fact {

float fact (int n) //定义计算n!的方法 { int i;

float x =1;

for(i=1;i

public class Check1 {

public static void main (String args[ ]) {

Fact x =new Fact( );

System.out.println(x.fact(10)); //计算10! System.out.println(x.fact(15)); //计算15! } }

运行结果: 1.0E9

2.91929271E16

8、编译并运行下面的程序,观察分析运行结果,体会程序中super和this的用法,进一步理解变量隐藏和方法重写的概念。 import java.io.*;

class SuperClss //定义父类 {

int x;

SuperClss( ) //父类的构造方法 { x=10; }

void doClss( ) {

System.out.println(\ } }

class SubClss extends SuperClss //定义子类 { int x;

SubClss( ) //子类的构造方法

{

super( ) ; x =100; }

void doClss( ) //重写父类的doClss方法 //调用父类的构造方法

{

System.out.println(\ }

void doDemo( ) { int x; x=1000;

super.doClss( ); doClss( ); System.out.println(\ System.out.println(\ System.out.println(\ } }

public class SuperDemo {

public static void main(String args[ ]) {

SubClss s = new SubClss();

//演示super和this的方法 //调用父类的doClss方法 //调用本类的doClss方法 //父类的x //本类的x //本方法的x //主方法

s.doDemo(); } }

运行结果: SuperClss.doClass() SubClss.doClss() super.x=10 this.x=100 x=1000

体会:此程序中定义了一个父类,子类SubClss继承了父类SuperClss,在主函数中定义SubClss类对象 s时(即执行语句:SubClss s = new SubClss();时 ),自动调用类SubClss的构造函数SubClss(),再此构造函数中先执行“super( ) ;”语句,这样就调用类SuperClss的构造方法SuperClss( ),因为super来指明超类中的方法。同样在子类方法doDemo( )中,执行语句“super.doClss( );”时,则调用父类的方法doClss( )。如不用super 来指定的话,,则调用的是子类的方法doClss( ),这里子类SubClss()的成员方法doClss( )重写了父类SuperClss( )的成员方法doClss( )。

语句 “System.out.println(\”中super调用的是父类SuperClss的变量x,而语句 “System.out.println(\”中this调用的子类SubClss的变量x, 关键字this和super分别用来指明子类和父类中同名的成员变量。这里父类SuperClss的成员变量x、子类SubClss的成员变量x和类方法doDemo( )中使用的局部变量x三者同名,则要使用关键字this和super来指定所要使用的变量。如不用则输出的类方法的局部变量,如语句“System.out.println(\”输出的就是类方法doDemo()的局部变量。这里子类SubClss()的成员变量x隐藏了父类SuperClss( )的成员变量x。

9、编译并运行下面的程序,分析运行结果,体会其中方法重载的用法,进一步理解方法重载的概念。

class Father //本类中的speak方法重载了两次 {

void speak( ) //无参数的speak方法 {

System.out.println(″I am Father! ″);


Java程序设计各章习题及其答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年中考物理猜题押题:估测题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: