java实验报告 二_第1页
java实验报告 二_第2页
java实验报告 二_第3页
java实验报告 二_第4页
java实验报告 二_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验二:面向对象编程一、 实验目的通过编程和上机实验了解Java语言是如何体现面向对象编程基本思想,熟悉类的封装方法以及如何创建类和对象,熟悉成员变量和成员方法的特性,熟悉类的继承性和多态性的作用,熟悉包、接口的使用方法,掌握OOP方式进行程序设计的方法。二、 实验要求1、 编写程序实现类的定义和使用。2、 编写不同成员和不同成员方法修饰方法的程序。3、 编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序和多态性(成员方法重载、构造方法重载)的程序。4、 编写接口的定义和使用的程序。5、 编写包的定义和使用的程序。三、 实验内容及运行结果1、 类的定义和使用l 定义一个满足如下要求的

2、Date类:a. 用下面的格式输出日期:日/月/年b. 可运行在日期上加一天操作c. 设置日期 用该类编写一个显示当前日期的程序。l 创建一个桌子Table类,该类中有桌子名称、重量、桌面宽度、长度及桌子高度属性。其中有:a. 构造函数初始化所有数据成员b. Area():计算桌面的面积c. Display():在屏幕上输出所有数据成员的值d. ChangeWeight(int ):改变桌子重量的函数e. 在main()中实现创建一个桌子对象,计算桌面的面积,改变桌子重量,并在屏幕上输出所有桌子数据成员的值。源代码:class Tableprivate String name;private

3、double weight;private double width;private double length;private double height;/构造函数public Table(String name,double weigth,double width,double length,double height) = name;this.weight = weight;this.width = width;this.length = length;this.height = height;/计算桌面的面积public double Area()return wi

4、dth*length;/在屏幕上输出所有数据成员的值public void Display()System.out.println(桌子的名称: +name+, +重量(kg): +weight);System.out.println(桌面的宽度(cm): +width+, +长度(cm): +length);System.out.println(桌子的高度(cm): +height);/改变桌子重量的函数public void ChangeWeight(double weight)this.weight = weight;class TestTable public static void

5、main(String args) Table t = new Table(桌神,10,100,60,130);/计算桌面的面积System.out.println(桌面的面积为:+t.Area();/改变桌子重量t.ChangeWeight(15);/在屏幕上输出所有桌子数据成员的值t.Display();运行结果:2、 修饰符的使用:有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下:public、private、protected、package、static、final、transient、volatilel 程序功能:通

6、过两个类StaticDemo、TestDemo说明静态变量/方法与实例变量/方法的区别,程序源代码如下:class StaticDemostatic 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 TestDemopublic static void main(String args)System.out.println(静

7、态变量x=+StaticDemo.getX();System.out.println(实例变量y=+StaticDemo.getY();/非法,编译时将出错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=+a.getX();System.out.println(静态变量a.y=+a.getY();System.out.println(静态变量b.x=+b.getX();System.

8、out.println(静态变量b.y=+b.getY();运行结果:3、 继承和多态的作用新类可从现有的类中产生并保留现有类的成员变量和方法,并可根据需要对它们加以修改。新类还可添加新的变量和方法,这种现象就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类( superclass),这个新类称为子类。 Java提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实

9、现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。 类的继承发生在多个类之间,而类的多态只发生在同一个类上。在一个类中,可以定义多个同名的方法,只要确定它们的参数个数和类型不同。这种现象称为类的多态。多态使程序简洁,为程序员带来很大便利。在OOP中,当程序要实现多个相近的功能时,就给相应的方法起一个共同的名字,用不同的参数代表不同的功能。这样,在使用方法时不论传递什么参数,只要能被程序识别就可以得到确定的结果。类的多态性体现在方法的重载( overload)上,包括成员方法和构造方法的重

10、载。l 创建Rodent(啮齿动物):Mouse(老鼠),Gerbil(沙鼠),Hamster(大颊鼠)等的一个继承分级结构。在基础类中,提供适用于所有Rodent的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent采取不同的行动。创建一个Rodent数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。源程序:class Rodent/基础类void nightAction()System.out.println(Rodent.nightAction();class Mouse extends Rodent/老鼠类void nightAction()

11、System.out.println(Mouse.nightAction();class Gerbil extends Rodent/沙鼠类void nightAction()System.out.println(Gerbil.nightAction();class Hamster extends Rodentvoid nightAction()System.out.println(Hamster.nightAction();/测试类public class RodentTestpublic static void main(String args)Rodent rt = new Rodent

12、4;/创建一个Rodent数组rt0 = new Rodent();rt1 = new Mouse();rt2 = new Gerbil();rt3 = new Hamster();for(Rodent rodent:rt)rodent.nightAction();运行结果:4、 接口的定义和使用Java中的接口在语法上有些类似于类,它定义了若干的抽象方法和常量,形成一个属性集合,该属性集合通常代表了某一功能的实现。它的主要作用是可以帮助我们实现类似于类的多重继承的功能。Java中各类获取某一接口定义的功能,并不是通过直接继承这个接口中的域和方法来实现的,因为接口中的域都是常量,接口中的方法都

13、是没有方法体的抽象方法,也就是说,接口定义的仅仅是实现某一特定功能的功能接口和规范,而并没有真正的实现这个功能,这个功能的真正实现实在“继承”了这个接口的各个类中完成的,有这些类来具体定义接口中各抽象方法的方法体。故在Java中,通常把对接口功能的“继承”称为实现。 Java中声明接口的语法如下: public Interface接口名extends父接口名列表 /接口体: /常量域声明 public static final域类型 域名=常量值; /抽象方法声明 public abstract native返回值方法名(参数列表)throw异常列表; 某个类为接口中的抽象方法书写语句并定义实

14、在的方法体,称为该类实现可这个接口。 程序如下: public class InterfaceTest public static void main(String args) double x; circle y=new circle(2); /y.cirdle(2); x=y.calculate_atea(); System.out.println( 面积为:+x); interface cal_area double PI=3.14; public double calculate_atea(); class circle implements cal_area double r; ci

15、rcle(double r)this.r=r; public double calculate_atea()return PI*r*r; 编译并运行上述程序。5、 包的定义和使用创建自定义包Mypackage在存放源程序的文件夹中建立一个子文件夹Mypackage。例如,在“E:java程序”文件夹之中创建一个与包同名的子文件夹Mypackage(E:java程序Mypackage),并将编译过的class文件放入该文件夹中。注意:包名与文件夹名大小写要一致。再添加环境变量classpath的路径,例如:E:j2sdkl.4.2_01lib;E:java程序 在包中创建类YMD.java程序功

16、能:在源程序中,首先声明使用的包名Mypackage,然后创建YMD类,该类具有计算今年的年份并输出一个带有年月日的字符串的功能。源代码如下 package Mypackage; /声明存放类的包import java.util.*; /引用java.util包public class Test_YMD private int year,month, day; public static void main(String arg3) public Test_YMD(int y, int m, int d) year=y; month=(m=1)&(m=1)&(d=31)?d:1); publi

17、c Test_YMD() this(0,0,0); public static int thisyear() return Calendar.getInstance().get(Calendar.YEAR);/返回当年的年份 public int year() return year;/返回年份 public String toString() return year+-+month+-+day;/返回转化为字符串的年-月-日 编译Test_YMD.java文件,然后将Test_ YMD.class文件存放到Mypackage文件夹 编写使用包Mypackage中Test_YMD类的程序YMD

18、_2.java程序功能:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了Test_YMD的方法来计算年龄。源代码如下: import Mypackage.Test_YMD;/引用Mypackage包中的Test_YMD类public class YMD_2 private String name; private Test_YMD birth; public static void main(String args) YMD_2 a=new YMD_2(白若男,1990,1,11); a.output(); public YMD_2(String n1,Test_YMD d1) name=n1; birth=d1; public YM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论