资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
实验:面向对象程序设计基础一、实验目的1、2、3、4、理解Java jfll向对彖编程的基木思想,掌握类和对彖的创建。 掌握类中成员变量和成员方法的访问控制。掌握类、成员变量和方法的非访问控制符。掌握类的继承和多态。二、实验内容(一)编写体现面向对象思想的程序编写一个完整的Java Application程序。要求:(1)编写复数类Complex (2)编写主 类TestComplex,将每对测试数据相加并显示结果,三组测试的复数为:l+2i和3+4i、l+2i 和 l-2i l+2i 和l+2i o其中,复数类Complex必须满足如下要求:%1 复数类Complex的成员变量有:realPart : int类型,代表复数的实部。imaginPart : int类型,代表复数的虚部。%1 复数类Complex的方法有:Complex():构造方法,将复数的实部和虚部都置0。Complex(int r,int i):构造方法,将复数的实部初始化为r,将虚部初始化为i。Complex complexAdd(Complex a):将当前复数对象与形参复数对彖a相加,所得的结 果仍是一个复数对象,返冋给此方法的调用者。Public String toStringO :把当前复数对彖的实部a、虚部b组合成“a+bi”的字符串形 式;若实部为0,虚部不为0,则返回bi;若虚部为0,则返回廿。(-)使用修饰符有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用 修饰符来实现这个目的。常用的修饰符如下。public private protected static final abstract不同修饰符的访问控制权限如表所示。类所仔类和包publicJJJVprivateJprotectedJV*JpackageJJ(1) 程序功能:通过两个类StaticDemo. Test说明静态变量、方法与实例变量、方法 的区别。(2) 编写类文件Testjava,程序源代码如下。class StaticDemo static int x;int y;public static int getXQ return x;public static void setX(int newX) x = newX;)public int getY() return y;public void setY(int nevvY) y = newY;public class Testpublic static void main(String args) System.out.println(静态变量 x=+StaticDemo.getX();System.out.println(实例变量 y=+StaticDemo.getY();StaticDemo a= new StaticDemo();StaticDemo b= new StaticDemo();a.setX(l);a. setY(2);b. setX(3);b.setY ;System.out.println(静态变量 a.x=+a.getX();System.out.println(实例变量 a.y=+a.getY();System.out.println(静态变量 b.x=+b.getX();System.out.println(实例变量 b.y=+b.getY();(3)对上面的源程序进行编译,会出现出错提示,请指出错误的原因并改正。(三)类的继承性练习1. 进一步理解继承的含义新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修 改。新类还可添加新的变量和方法。这种现象就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一 个已定义的类继承下來的,就可以引用被继承类的全部成员。被继承的类称为父类或超类 (superclass),这个新类称为了类。Java提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的, 因此,很少有某个类恰恰满足你的需要。你必须设计白己的能处理实际问题的类,如果你设 计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对了类进行扩展,即添加新 的属性和方法。这使得了类要比父类大,但更具特殊性,代表看一组更具体的对象。继承的 意义就在于此。2. 创建继承的类(1)程序功能:通过KY3_7_P类产生子类KY3_8,其不仅具有父类的成员变量xm (姓名)、xh(学号),还定义了新成员变量xy(学院)、xi(系)。在稈序中调用了父类的print方法,同时可以看出了类也具有该方法。(2)编写KY3_8.java程序,源代码如下。class KY3_7_Pprotected String xm;/具有保护修饰符的成员变量protected int xh;void setdata(String m,int h)设置数据的方法xm =m;xh = h;public void print()输出数据的方法System.out.println(xni+, +xh);public class KY3_8 extends KY3_7_Pprotected String xy;protected String xi;public static void main(String args) KY3_7_Ppl = new KY3_7_P(); pl.setdata(“李刚”,12321); pl.print();KY3_8 si = new KY3_8();s l.setdatac*郭丽娜”,12345); /调用父类的成员方法 sl.xy=“信息技术学院“;访问本类的成员变量sl.xi=“计算机科学系”;访问本类的成员变量sl.pri nt();System.out.print(s 1 .xm+n, n+s 1 .xy+, +sl.xi);(3) 编译并运行程序四)类的多态性练习1. 理解类的多态性类的继承发生在多个类Z间,而类的多态只发生在同一个类上。在一个类中,可以 定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。 多态使程序简洁,为程序员带来很大便利。在oOP中,当程序要实现多个相近的功能 时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用 方法时不论传递什么参数,只要能被稈序识别就可以得到确定的结果。类的多态性体现在方法的重载。2. 方法的重载方法的重载是指对同名方法的不同使用方式。 程序功能:对不同的数进行排序输出。IntSort类中定义3个同名的方法sort, 在 编写KY3_9.java文件,源代码如下。import java.awt.Graphics;import java.applet. Applet;class IntSort public String sort(int a, int b)(讦(ab)return a+ +b;elsereturn b+” u+a;public String sort(int a, int b, int c) int swap;if (ab) swap=a;a=b;b=swap;if (ac) swap=a;a=c;c=swap;if (bc) swap=b;b=c;c=swap;return a+ +b+ +c;public String sort(int arrJ) String s=” ”;int swap;for (int i=0; iarr.length; i+)for (int j=0; jarrj+l) swap=arrjl;arrj=arr|j+l;arrj+l=swap;for (int i=0; iarr.length; i+)s=s+arri+Hreturn s;public class KY3_9 extends Applet IntSort s=new IntSort();public void paint(Graphics g) int a=30, b=12, c=40;int arr=34,8,12,67,44,98,52,23,16,16;g.drawString(”两个数的排序结果:+s.sort(a,b),30,30); g.drawString(H个数的排序结果:+s.sort(a,b,c),30,60); g.drawStringClfc组的排序结果:+s.sort(arr),30,90); 编译并运行程序 三个同名方法public String sort (int a, int b)public String sort (int a, int b, int c)public String sort (int arr) 编写KY3_9类文件的页面文件KY3_9.html
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号