《网络编程技术》实验指导书实验二word版本_第1页
《网络编程技术》实验指导书实验二word版本_第2页
《网络编程技术》实验指导书实验二word版本_第3页
《网络编程技术》实验指导书实验二word版本_第4页
《网络编程技术》实验指导书实验二word版本_第5页
全文预览已结束

下载本文档

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

文档简介

实验二 面向对象编程 实验目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基 本思想 熟悉类的封装方法以及如何创建类和对象 熟悉成员变量和成员方法的 特性 熟悉类的继承性和多态性的作用 熟悉包 接口的使用方法 掌握 OOP 方式进行程序设计的方法 实验要求 1 编写程序实现类的定义和使用 2 编写不同成员和不同成员方法修饰方法的程序 3 编写体现类的继承性 成员变量 成员方法 成员变量隐藏 的程序 和多态性 成员方法重载 构造方法重载 的程序 4 编写接口的定义和使用的程序 5 编写包的定义和使用的程序 实验内容 1 类的定义和使用 义一个满足如下要求的 Date 类 a 用下面的格式输出日期 日 月 年 b 可运行在日期上加一天操作 c 设置日期 用该类编写一个显示当前日期的程序 创建一个桌子 Table 类 该类中有桌子名称 重量 桌面宽度 长度 及桌子高度属性 其中有 a 构造函数初始化所有数据成员 b Area 计算桌面的面积 c Display 在屏幕上输出所有数据成员的值 d ChangeWeight int 改变桌子重量的函数 e 在 main 中实现创建一个桌子对象 计算桌面的面积 改变桌子重量 并在屏幕上输出所有桌子数据成员的值 2 修饰符的使用 有时需要公开一些变量和方法 有时需要禁止其他对象使用变量和方 法 这时可以使用修饰符来实现这个目的 常用的修饰符如下 Public private protected package static final transient volatile 程序功能 通过两个类 StaticDemo TestDemo 说明静态变量 方法与 实例变量 方法的区别 程序源代码如下 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 TestDemo public 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 4 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 继承和多态的作用 新类可从现有的类中产生并保留现有类的成员变量和方法 并可根据需要对 它们加以修改 新类还可添加新的变量和方法 这种现象就称为类的继承 当建 立一个新类时 不必写出全部成员变量和成员方法 只要简单地声明这个类是从 一个已定义的类继承下来的 就可以引用被继承类的全部成员 被继承的类称为父类 或超类 superclass 这个新类称为子类 Java 提供了一个庞大的类库让开发人员继承和使用 设计这些类是出于公用 的目的 因此 很少有某个类恰恰满足你的需要 你必须设计自己的能处理实际 问题的类 如果你设计的这个类仅仅实现了继承 则和父类毫无两样 所以 通 常要对子类进行扩展 即添加新的属性和方法 这使得子类要比父类大 但更具 特殊性 代表着一组更具体的对象 继承的意义就在于此 类的继承发生在多个类之间 而类的多态只发生在同一个类上 在一个类中 可以定义多个同名的方法 只要确定它们的参数个数和类型不同 这种现象称为 类的多态 多态使程序简洁 为程序员带来很大便利 在 OOP 中 当程序要实 现多个相近的功能时 就给相应的方法起一个共同的名字 用不同的参数代表不 同的功能 这样 在使用方法时不论传递什么参数 只要能被程序识别就可以得 到确定的结果 类的多态性体现在方法的重载 overload 上 包括成员方法和 构造方法的重载 创建 Rodent 啮齿动物 Mouse 老鼠 Gerbil 沙鼠 Hamster 大颊 鼠 等的一个继承分级结构 在基础类中 提供适用于所有 Rodent 的方法 并 在衍生类中覆盖它们 从而根据不同类型的 Rodent 采取不同的行动 创建一个 Rodent 数组 在其中填充不同类型的 Rodent 然后调用自己的基础类方法 看 看会有什么情况发生 4 接口的定义和使用 Java 中的接口在语法上有些类似于类 它定义了若干的抽象方法和常量 形 成一个属性集合 该属性集合通常代表了某一功能的实现 它的主要作用是可以 帮助我们实现类似于类的多重继承的功能 Java 中各类获取某一接口定义的功 能 并不是通过直接继承这个接口中的域和方法来实现的 因为接口中的域都是 常量 接口中的方法都是没有方法体的抽象方法 也就是说 接口定义的仅仅是 实现某一特定功能的功能接口和规范 而并没有真正的实现这个功能 这个功能 的真正实现实在 继承 了这个接口的各个类中完成的 有这些类来具体定义接 口中各抽象方法的方法体 故在 Java 中 通常把对接口功能的 继承 称为实 现 Java 中声明接口的语法如下 public Interface 接口名 extends 父接口名列表 接口体 常量域声明 public static final 域类型 域名 常量值 抽象方法声明 public abstract native 返回值方法名 参数列表 throw 异常列表 某个类为接口中的抽象方法书写语句并定义实在的方法体 称为该类实现可 这个接口 程序如下 interfaceTest java public class InterfaceTest public static void main String args double x cirdle y new circle y cirdle 2 x y calculate area system out println n 面积为 x n interface cal area double PI 3 14 double calculate atea class circle implements cal area double r circle double r this r r public double calculate area return PI r r 编译并运行上述程序 5 包的定义和使用 创建自定义包 Mypackage 在存放源程序的文件夹中建立一个子文件夹 Mypackage 例如 在 E java 程序 文件夹之中创建一个与包同名的子文件夹 Mypackage E java 程序 Mypackage 并将编译过的 class 文件放入该文件夹中 注意 包名与文件夹 名大小写要一致 再添加环境变量 classpath 的路径 例如 E j2sdkl 4 2 Ol lib E java 程序 在包中创建类 YMD java 程序功能 在源程序中 首先声明使用的包名 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 public 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 2 java 程序功能 给定某人姓名与出生日期 计算该人年龄 并输出该 人姓名 年龄 出生日期 程序使用了 Test YMD 的方法来计算年龄 源代码 如下 import Mypackage KY4 1 YMD 引用 Mypackage 包中的 KY4 1 一 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 YMD 2 String n1 int y int m int d this nl new

温馨提示

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

评论

0/150

提交评论