实验三 面向对象编程练习 下载本文

实验三 面向对象编程练习

【开发语言及实现平台或实验环境】

Windows2000 或XP,JDK1.6

【实验目的】

1. 理解Java语言是如何体现面向对象编程基本思想, 2. 了解类的封装方法,以及如何创建类和对象, 3. 了解成员变量和成员方法的特性。 4. 掌握OOP方式进行程序设计的方法,

5. 了解类的继承性和多态性的作用。

【实验要求】

1. 编写一个体现面向对象思想的程序。

2. 编写一个创建对象和使用对象的方法程序。 3. 编写不同成员变量修饰方法的程序。 4. 编写不同成员方法修饰的程序。

5. 编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序。 6. 编写体现类多态性(成员方法重载,构造方法重载)的程序。

【实验内容】 一.使用修饰符

有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。

常用的修饰符如下。[public] [private] [protected] [package] [static] [final] [transient] [volatile]不同修饰符的访问控制权限如表3.1 所示。

1.程序功能:通过两个类StaticDemo、LX3_4 说明静态变量/方法与实例变量/方法的区别。 2.编写类文件LX3_4.java,程序源代码如下。 class StaticDemo {

static int x; int y;

public static int getX() { return x;

}

public static void setX(int newX) { x = newX; }

public int getY() { return y; }

public void setY(int newY) { y = newY; }

}

public class LX3_4 {

public static void main(String[] args) {

System.out.println(\静态变量x=\

System.out.println(\实例变量y=\非法,编译时将出错 StaticDemo a= new StaticDemo(); StaticDemo b= new StaticDemo(); a.setX(1); a.setY(2); b.setX(3); b.setY(4);

System.out.println(\静态变量a.x=\System.out.println(\实例变量a.y=\System.out.println(\静态变量b.x=\System.out.println(\实例变量b.y=\} }

3.对上面的源程序进行编译,会出现如图3.4 所示的出错提示。

4.将源程序中的出错语句删除或使用解释符//隐藏起来,例如, //System.out.println(\实例变量y=\5.重新编译并运行该程序,结果如图3.5 所示。

static 声明的成员变量/方法被视为类的成员变量/方法,而不把它当作实例对象的成员变量/方法。换句话说,静态变量/方法是类固有的,可以直接引用,其它成员变量/方法仅仅被声明,生成实例对象后才存在,才可以被引用。基于这样的事实,也把静态变量/方法称为类变量/方法,非静态变量称为实例变量/方法。 从实验结果可以得出以下几点结论:

·类的静态变量可以直接引用,而非静态变量则不行。类的静态变量相当于某些程序语言的全局变量。 ·静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可用。 ·类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。 ·对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。

二. 方法中参数传递的练习

在其它语言中,函数调用或过程调用时参数有传值调用和传地址调用之分。在Java 中,方法中的参数传递可以分为传值调用或对象方法调用等方式。传值调用即传递的参数是基本数据类型,调用方法时在方法中将不能改变参数的值,这意味着只能使用它们。对象调用是指先调用对象,再调用对象的方法,这种方式可以修改允许存取的成员变量。所以,如果不想改变参数的值,可以采用传值调用的方法。如果想改变参数的值,可采用对象调用的方法,间接修改参数的值。

1.编写一个传值调用的程序文件。

(1)程序功能:程序首先给整型变量x 和y 赋一个初值10,然后使用传值调用方式调用方法ff1对x 和y 做乘方及输出x 和y 的乘方值,最后再输出x 和y 的乘方值。 (2)程序源代码如下。

(3)编译,其运行结果如图3.6 所示。

(4)分析其运行结果

这个程序没有实现预期的结果,原因是ff1 方法采用了传值调用。调用ff1 方法时,将产生两个参数passX 和passY,x 和y 的值被传递给这两个参数。尽管在方法中计算了参数的平方,但从ff1方法返回后,参数消失,此时x 和y 的值仍是初值。 2.编写一个调用对象方法的程序文件。

(1)程序功能:通过调用对象的方法在方法调用后修改了成员变量的值。