西 西 安 安

邮 邮 电 大 学 (计算机学院)

课内实验报告 实验名称:

态 继承与多态 ﻩ ﻩ

专业名称:

计算机科学与技术 班 班

级:

计科 1405 班

学生姓名:

高宏伟

学 学

号:

指导教师:

刘霞林 实验日期:

2016 、10 0、 、13

一、实验目得

通过编程与上机实验理解 Java 语言得继承与多态特性,掌握变量得隐藏、方法得覆盖、重载,掌握抽象类与接口得使用。

二、实验要求

1、编写体现类得继承性(成员变量、成员方法、成员变量隐藏)得程序。

2、编写体现类得多态性(成员方法重载)得程序. 3、编写体现类得多态性(构造方法重载)得程序。

4、编写使用接口得程序。

三、实验内容

( ( 一) ) 类得继承

1、创建 公共类 Student、

(1)编写程序文件 Student、java,源代码如下:

pub li c class Student

p prot ect edString name;

//具有保护修饰符得成员变量

p rotected int number;

void setData(String m,int h)

//设置数据得方法

name =m;

number= h;

}

public void print()

//输出数据得方法

{

System、out、println(name+", "+number);

}

(2)编译 Student、java,产生类文件 Student、class.

2.创建继承得类 Undergraduate (1)程序功能:通过 Student 类产生子类 undergraduate,其不仅具有父类得成员变量

name(姓名)、number(学号),还定义了新成员变量 academy(学院)、department (系)。在程序中调用父类得 print 方法. (2)编写 Undergraduate 程序:

class Undergraduate extends Student

{

【代码 1】

//定义成员变量 academy

【代码 2】

//定义成员变量 department

public static void main(String args[])

{

【代码 3】

//创建一个学生对象 s

【代码 4】

//用父类得setData 方法初始化对象 s 【代码 5】

//对象 s 调用 print 方法

【代码 6】

//创建一个大学生对象 u

【代码 7】//调用父类得成员方法 setData 初始化对象u

【代码 8】

//设置对象 u 得成员变量 academy 【代码 9】

//设置对象 u 得成员变量 department

System、out、print(u、name+”, ”+u、number+", "+u、academy+”, "+u、department);

}

}

(3)编译并运行程序 注意:公共类 Student 与 undergraduate 类要在同一文件夹(路径)内.

( ( 二) ) 方法得重载

(1)程序功能:对不同得数进行排序输出。在IntSort 类中定义3 个同名得方法sort.

(2)编写 Sort、java 文件,源代码如下. import java、awt、Graphics; import java、applet、Applet; class IntSort { public String sort(int a, int b) { if (a>b)

return a+""+b; else return b+""+a; } public String sort(int a, int b, int c)

{ int swap; if (a〈b) { swap=a; a=b; b=swap; } if (a

{ String s=""; int swap; for (int i=0; i〈arr、length; i++)

for (int j=0; j<arr、length-1; j++) if (arr[j]>arr[j+1])

{ s[j]; arr[j]=arr[j+1]; arr[j+1]=swap; } for (int i=0; i〈arr、length; i++)

s=s+arr[i]+""; return s; } } public class Sort 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("三个数得排序结果:”+s、sort(a,b,c),30,60); g、drawString(”数组得排序结果:"+s、sort(arr),30,90); } } (3)编译并运行程序 (4)编写 Sort 类文件得页面文件sort、html 〈applet codebase=e:/java/程序 code=KY3_11、class width=420 height=380〉 ( ( 三)

构造方法得重载

(1)编写构造方法 User 得重载程序文件 RunDemo,源代码如下。

class User{ private String userName, password; 【代码 1】

//定义一个无参构造方法得头部 { System、out、println(”全部为空!”); } 【代码 2】

//定义一个构造方法,参数为 name,用 name 初始化成员变量userName 【代码 3】

//定义一个构造方法得头部,参数为 name 与 pwd { 【代码 4】

// 调用上个构造方法初始化 userName 【代码 5】

//初始化成员变量 password check(); } void check()

{ String s=null; if (userName!=null) s=”用户名:”+userName; else s="用户名不能为空!"; if (password!="12345678") s=s+" 口令无效!"; else s=s+” 口令:********”; System、out、println(s); } } public class RunDemo { public static void main(String[] args) { new User(); new User(”刘新宇");

new User(null,"邵丽萍”); new User("张驰”,”12345678"); } }

(2)编译并运行程序 (四) ) 实现

Mous eL istener 与

MouseMoti o nL i stener 两个接口

(1)编写实现接口得程序文件 Interface、java,源代码如下.

import java、applet、Applet;

import java、awt、*;

import java、awt、event、*;

【代码 1】

//定义一个实现接口 MouseListener, MouseMotionListener 并继承Applet得一个类得头部,类名为 Interface {

int x1, y1, x2, y2;

public void init()

addMouseListener(this);

addMouseMotionListener(this);

}

public void paint(Graphics g) {

【代码 2】//画一条直线

public void mousePressed(MouseEvent e) { // 记录起点坐标

x1=e、getX();

y1=e、getY();

}

public void mouseClicked(MouseEvent e) {}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e)

{}

public void mouseReleased(MouseEvent e)

{}

public void mouseMoved(MouseEvent e) {}

public void mouseDragged(MouseEvent e)

{ // 记录终点坐标

x2=e、getX();

y2=e、getY();

repaint();

}

 编译 Interface、java 文件。

 编写 Interface、html 文件,源代码如下. 〈applet codebase=e:/java/程序 code=Interface、class width=320 height=180〉

条线 四、运行结果

五、思考题

1. 使用变量之前就是不就是都要先声明变量。使用变量之前就是不就是都要先赋值,为什么? 使用之前必须先声明,因为声明了,运行时计算机才能划分计算机空间给她。根据变量不同,或者在堆里,或者在栈里.但就是没有声明得话,连存在得空间都没有,那么读写也就无从谈起。不就是必须先赋值,因为会自动赋默认值。

2. 什么就是构造方法。

构造方法就是一种特殊得方法,它就是一个与类同名且没有返回值类型得方法。对象得创建就就是通过构造方法来完成,其功能主要就是完成对象得初始化.当类实例化一个对象时会自动调用构造方法。构造方法与其她方法一样也可以重载。

3. 类得继承与多态有什么作用,在使用上应该注意什么问题。

继承就就是子类继承父类,使子类具有父类得各种属性与方法,好处就就是避免多余得代码出现,例如,项目中常常要用到得数据库得开启关闭,就可以单独写一个父类,其她类要用得话可以去继承。。。

多态就就是一个接口,使用不同得实例去执行不同得操作,好处就就是增强程序得可扩展性及可维护性,使代码更简洁 六、总结

方、藏隐得量变了握掌,性特态多与承继得言语 avaJ 了解理验实机上与程编次这过通ﻩ法得覆盖、重载,掌握抽象类与接口得使用。对于 Java 语言有了更深一层得认识,多态与继承、方法重写密切相关,我们在方法中接收父类类型作为参数,在方法实现中调用父类类型得各种方法。当把子类作为参数传递给这个方法时,java虚拟机会根据实际创建得对象类型,调用子类中相应得方法。

java实验报告4继承与多态_Java继承与多态实验报告相关推荐

  1. java继承的性质_java 继承的特性

    java的三大特性之一-----继承 继承的特性: 1.提高了代码的复用性----代码的简洁 2.让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码 ...

  2. java继承与多态_Java继承与多态

    感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...

  3. java继承与多态性_Java继承与多态浅析

    一.继承 1.通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两     ...

  4. java中的多态_Java中的多态

    多态与HoFs 朋友们好久不见啊,最近笔者同时在写脚本型语言--JavaScript,和工业级的面向对象语言--Java. 在写代码的同时呢,也会思考这些语言的不同.今天就拿 Java 中的多态,来谈 ...

  5. java继承的举例_java继承实例

    实例需求:实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一 个类Add()用于涨工资,普通员工一次能涨10%,经理能涨20%. 具体要求如下: ( ...

  6. java继承的作用_Java继承概述以及Java继承案例和继承的好处

    Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...

  7. java 实例方法直接调用超类的实例方法_Java继承关系中,父类方法使用实例变量和调用实例方法的探究...

    面向对象编程中,某一个实例方法使用实例变量和调用其它实例方法的情况是常见的.当存在继承关系时,这种情况就变得复杂起来.以下就对继承关系中,父类的某实例方法使用实例变量和其它实例方法的情况进行探究.因为 ...

  8. java继承对象转换_java 继承的基础(转)

    java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...

  9. java实例变量可以被覆盖吗_Java继承覆盖实例变量

    参见英文答案 > Java Inheritance – instance variables overriding                                    3个 我 ...

最新文章

  1. int(1) 和 int(10) 的区别?很多老程序都理解错了!
  2. Spring Boot统一异常处理的拦截指南
  3. 重学JavaScript深入理解系列(一)
  4. python下载软件-python下载工具
  5. html 重复提交表单,表单重复提交问题的三种解决思路
  6. leetcode 390. Elimination Game | 390. 消除游戏(Java)
  7. javaweb学习总结(十五):JSP基础语法
  8. 探讨对理想团队模式构建的设想及软件流程的理解
  9. 收藏 | 神经网络中,设计loss function有哪些技巧?
  10. RPC实现以及相关学习
  11. 兄弟 你们永远是我的大哥哥
  12. 如何将linux内核的带级别控制的printk内容打印出来
  13. js用户密码强度验证函数
  14. Reflector for .NET 下载问题
  15. 头文件<ctype.h>
  16. masm 16位汇编语法
  17. 取关几十个优质公众号,是否可惜?
  18. 片上总线Wishbone 学习(十二)总线周期之块写操作
  19. 诗歌一 我自倾杯,君且随意
  20. 5个wordpress资源网站推荐

热门文章

  1. 致敬高伯龙,小年给自己加油哦!
  2. 用 Python 解决“鸡生蛋”问题
  3. python视频网站项目_Python超羽量级灵活框架 Flask实战微电影视频网站 大小项目通吃 Flask实战项目...
  4. OS | 哲学家问题
  5. ANSYS软件调用出错问题
  6. Dart : 查看 dill 编译代码文件
  7. 【虚幻5学习笔记①】连续普攻的判定和实现
  8. 基于asp.net的公安报案登记管理系统的设计与实现
  9. 霍尼韦尔服务器 型号,霍尼韦尔Honeywell中心管理服务器HUS-VMS-MAS HUS-VMS-SLA HUS-VMS-RPK详细信息_产品参数_价格_联系方式_DAV数字音视工程网...
  10. 好心情平台:抑郁症vs精分,如何治疗更有效?