java实验报告4继承与多态_Java继承与多态实验报告
西 西 安 安
邮 邮 电 大 学 (计算机学院)
课内实验报告 实验名称:
:
态 继承与多态 ﻩ ﻩ
专业名称:
计算机科学与技术 班 班
级:
计科 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继承与多态实验报告相关推荐
- java继承的性质_java 继承的特性
java的三大特性之一-----继承 继承的特性: 1.提高了代码的复用性----代码的简洁 2.让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码 ...
- java继承与多态_Java继承与多态
感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...
- java继承与多态性_Java继承与多态浅析
一.继承 1.通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两 ...
- java中的多态_Java中的多态
多态与HoFs 朋友们好久不见啊,最近笔者同时在写脚本型语言--JavaScript,和工业级的面向对象语言--Java. 在写代码的同时呢,也会思考这些语言的不同.今天就拿 Java 中的多态,来谈 ...
- java继承的举例_java继承实例
实例需求:实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一 个类Add()用于涨工资,普通员工一次能涨10%,经理能涨20%. 具体要求如下: ( ...
- java继承的作用_Java继承概述以及Java继承案例和继承的好处
Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...
- java 实例方法直接调用超类的实例方法_Java继承关系中,父类方法使用实例变量和调用实例方法的探究...
面向对象编程中,某一个实例方法使用实例变量和调用其它实例方法的情况是常见的.当存在继承关系时,这种情况就变得复杂起来.以下就对继承关系中,父类的某实例方法使用实例变量和其它实例方法的情况进行探究.因为 ...
- java继承对象转换_java 继承的基础(转)
java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...
- java实例变量可以被覆盖吗_Java继承覆盖实例变量
参见英文答案 > Java Inheritance – instance variables overriding 3个 我 ...
最新文章
- int(1) 和 int(10) 的区别?很多老程序都理解错了!
- Spring Boot统一异常处理的拦截指南
- 重学JavaScript深入理解系列(一)
- python下载软件-python下载工具
- html 重复提交表单,表单重复提交问题的三种解决思路
- leetcode 390. Elimination Game | 390. 消除游戏(Java)
- javaweb学习总结(十五):JSP基础语法
- 探讨对理想团队模式构建的设想及软件流程的理解
- 收藏 | 神经网络中,设计loss function有哪些技巧?
- RPC实现以及相关学习
- 兄弟 你们永远是我的大哥哥
- 如何将linux内核的带级别控制的printk内容打印出来
- js用户密码强度验证函数
- Reflector for .NET 下载问题
- 头文件<ctype.h>
- masm 16位汇编语法
- 取关几十个优质公众号,是否可惜?
- 片上总线Wishbone 学习(十二)总线周期之块写操作
- 诗歌一 我自倾杯,君且随意
- 5个wordpress资源网站推荐
热门文章
- 致敬高伯龙,小年给自己加油哦!
- 用 Python 解决“鸡生蛋”问题
- python视频网站项目_Python超羽量级灵活框架 Flask实战微电影视频网站 大小项目通吃 Flask实战项目...
- OS | 哲学家问题
- ANSYS软件调用出错问题
- Dart : 查看 dill 编译代码文件
- 【虚幻5学习笔记①】连续普攻的判定和实现
- 基于asp.net的公安报案登记管理系统的设计与实现
- 霍尼韦尔服务器 型号,霍尼韦尔Honeywell中心管理服务器HUS-VMS-MAS HUS-VMS-SLA HUS-VMS-RPK详细信息_产品参数_价格_联系方式_DAV数字音视工程网...
- 好心情平台:抑郁症vs精分,如何治疗更有效?