文档库 最新最全的文档下载
当前位置:文档库 › Java第04章--1(继承和多态)

Java第04章--1(继承和多态)

JAVA继承和多态实验报告

实验项目名称:继承和多态 (所属课程:Java语言程序设计) 院系:专业班级:姓名: 学号:实验地点:指导老师: 本实验项目成绩:教师签字:日期: 1.实验目的 (1)掌握类的继承机制。 (2)熟悉类中成员变量和方法的访问控制。 (3)熟悉方法或构造方法多态性。 2.实验内容 (1)模拟编写程序,理解类的继承、多态、继承和多态规则。 (2)独立编程,实现类的继承和多态。 3.实验作业 设计一个类Shape(图形)包含求面积和周长的area()方法和perimeter()方法以及设置颜色的方法SetColor(),并利用Java多态技术设计其子类Circle(圆形)类、Rectangle (矩形)类和Triangle(三角形)类,并分别实现相应的求面积和求周长的方法。每个类都要覆盖toString方法。 海伦公式:三角形的面积等于s(s-a)(s-b)(s-c)的开方,其中s=(a+b+c)/2 程序代码为: Class包 package Class; public class Shape { private String color = "while"; public Shape(String color){ this.color = color; } public void setColor(String color){ this.color = color; } public String getColor(){ return color;

} public double getArea(){ return 0; } public double getPerimeter(){ return 0; } public String toString(){ return"color:" + color; } } package Class; public class Circle extends Shape { private double radius; public Circle(String color,double radius) { super(color); this.radius = radius; } public void setRadius(double radius){ this.radius = radius; } public double getRadius(){ return radius; } public double getCircleArea(){ return 3.14*radius*radius; } public double getCirclePerimeter(){ return 3.14*2*radius; } public String toString(){

Java继承与多态实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:继承与多态 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:2016.10.13

一、实验目的 通过编程和上机实验理解Java 语言的继承和多态特性,掌握变量的隐藏、方法的覆盖、重载,掌握抽象类和接口的使用。 二、实验要求 1.编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。 2.编写体现类的多态性(成员方法重载)的程序。 3.编写体现类的多态性(构造方法重载)的程序。 4.编写使用接口的程序。 三、实验内容 (一)类的继承 1.创建公共类Student. (1)编写程序文件Student.java,源代码如下: public class Student { protected String name; //具有保护修饰符的成员变量 protected 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(https://www.wendangku.net/doc/ca12540858.html,+", "+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

《java面向对象程序设计-继承和多态》教案

第四章 面向对象的概念和 Java 实现-2 回顾 ?类是具有相同属性和行为的一组对象的集合 , 对象是类的实例 ?封装是隐藏对象实现细节的过程,以便不让用户看到实现的细节 ?类可用Class 来定义,类的变量和方法可被该类的实例访问, 圆点符号用于访问对象的成员,构造函数在创建对象时初始化对象 ?包可用package 来申明,可用import 来导入包 目标 ?理解继承及其特点 ?运用JAVA程序实现继承 ?理解多态及其特点设计 ?运用JAVA程序实现多态 ?掌握访问修饰符和方法修饰符 继承 继承的特点 继承的优点 继承的JAVA实现 子类构造方法 2-1 子类构造方法 2-2 ?调用父类构造方法的语法为: super() 或 super(参数列表) ; ?super () 方法始终指向调用类的父类 调用父类构造方法 演示:示例 3 多态性 2-1 ?多态性是指?°多种形式?± ?它使用不同的实例而执行不同操作 ?多态包括方法重写和方法重载 多态性 2-2 方法重载 2-1 方法重载 2-2 演示:示例 4 方法重写 2-1 方法重写 2-2 访问修饰符 3-1 ?信息隐藏是 OOP 最重要的功能之一,也是使用访问修饰符的原因 ?信息隐藏的原因包括: ?对任何实现细节所作的更改不会影响使用该类的代码 ?防止用户意外删除数据 ?此类易于使用

访问修饰符 3-2访问修饰符 3-3

?访问修饰符可访问性 方法修饰符 static 修饰符 3-1 ?static修饰符修饰的方法叫静态方法 ?目的 ?使该方法独立于类的实例,使用类去访问,而不是类实例,所以也叫类方法 static 修饰符 3-2 ?调用静态方法的语法为: classname.methodname( ); static 修饰符 3-3 演示:示例 6 final 修饰符 abstract 修饰符 3-1 ?由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类 ?抽象方法必须声明在抽象类中 ?抽象方法语法: abstract type method_name(parameter_list); ?声明抽象类语法: abstract class{…… } ?使用:父类中的某些抽象不包含任何逻辑,并需要在子类中重写,子类提供这种抽象方法的实现细节 abstract 修饰符 3-2 ?抽象类可以具有指向子类对象的对象引用 abstract 修饰符 3-3 演示:示例 7 接口 ?接口就是某个事物对外提供的一些功能的申明 ?可以利用接口实现多态,同时接口也弥补了Java单一继承的弱点 ?使用interface关键字定义接口 ?一般使用接口声明方法或常量,接口中的方法只能是声明,不能是具体的实现 创建接口的步骤 2-1 // 定义方法的接口 public interface myinterface { public void add(int x, int y); public void volume(int x,int y, int z); } // 定义程序使用的常量的接口 public interface myconstants { public static final double price = 1450.00; public static final int counter = 5; } 创建接口的步骤 2-2 接口使用示例

Java为什么要继承、封装和多态

为什么要继承、封装和多态 1,为什么要继承 继承的好处是代码重用.哲学上讲事物都是有共性和特性的.把共性函数代码放入到父类中,把特性函数代码放入到子类中,当然是否共性要以参照点的标准.OO中所谓的抽象我自己理解为哲学中的共性在同一个行业中,他们各业务流程往往有很大的相似性,但往往我们都是到一个项目中就重新写一套流程代码,或者粘贴以前的代码.可能有很多代码都是以前写过的重复代码.造成重复劳动.如果采用继承应该这样,首先在父类中做一个基本上大部分行业项目都必要的简洁的主流程.在子类中针对具体项目的特殊性做主流程充分的完善的补充.这样在每个项目中,只针对项目的特殊性编写代码,大大降低重复劳动.当然根据具体流程的复杂多可以划分多的继承层次,呈现一种继承的树结构,但一定的要保证层次一定要有实际的意义. 2,为什么要封装 高内聚低偶合的思想简单的理解同一模块内的提高内聚,不同模块降低偶合.如果说一个类代表一个模块或是一个业务流,那么A类内部要提高内聚,类的属性可以看成是内的局部变量.提高数据的重用.公共函数尽量能被其他主函数,尽量达到功能内聚.如果说是A类和B类,并且是不同模块(也许是同一个模块下的两个子模块),那么B 是不能使用A的函数和属性的,紧进行数据偶合.封装的作用就体现在这里.

再现实中就项目中经常遇到这种情况,某项业务增加或修改一种类型的业务流,自己本身调试成功了,但是缺影响了此业务下其他的业务流,不得不测试所有得其他原本正常的业务流并不得不针对此做类型判断的补丁,这种补丁很肯能导致程序结构的不合理. 3.为什么要多态 个人认为多态的好处体现在代码的可扩充性,比如一个业务有多个业务流,为了区别不同的类型就的使用判断,那么新添加一个流程就得在过程执行主流程(往往是final,必然是面向过程的)中添加一个”if then”或是重载一个函数 在目前项目中mvc得控制器就是典型的多态.想想如果我们不使用多态那么怎么办?因为对PO对象是新添加的,那么必须针对新的PO 对象在代码中做IF判断,才能用他本身的对象类型指向他.造成过程执行主流程不断的要变更自己的代码. 总结: OO中继承和多态互相依赖又互相矛盾,没有继承就不可能有多态,多态的使用往往又在面向过程的代码中.继承是使子类可以使用父类的功能,而多态使父类能使用子类的功能. OO并非只是在编码阶段来处理,实际上在概要设计,详细设计,数据库设计的时候就应该OO的思想来设计.提高软件可重用性和可扩充性.对于想对一个行业做标准化产品软件而言,很重要.

20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态))

20XX级java语言实验3指导(面向对象程序设计(继承、封装、多态)) 上机实验三:面向对象程序设计(继承、封装、多态) 类是面向对象程序设计的基础,是Java的核心和本质所在,在Java中,所有的语言元素都封装在类中。编写java 程序的过程就是从现实世界中抽象出java可实现的类,并用合适的语句定义它们的过程,本节将学习类的应用,以及如何创建类的实例,通过类的继承更有效的组织程序结构,明确类之间的关系。掌握本节所讲的内容后,读者就可以使用面向对象技术编写java程序了。 接口是特殊的抽象类,只包含常量和方法的定义,而没有方法的实现,也就是说接口是方法定义和常量值的集合。 包是Java语言中有效管理类的一个机制。通过关键字package声明包语句,package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。使用import语句可以引入包中的类。 一、实验目的 1) 2) 3) 4) 5) 6) 7) 掌握类的定义和使用掌握对象的声明和使用 了解构造函数的概念和使用掌握类的继承关系和派生方法掌握多态的概念与使用掌握接口的定义和使用掌握

Java中包的应用 二、实验内容 1) 2) 3) 4) 5) 6) 7) 类的声明 定义类成员变量以及成员方法 实例化类、创建类对象以及类方法的调用类的继承 通过实例理解接口的定义通过实例熟悉接口的应用 正确应用Java中包和import语句 三、实验步骤 1) 类和类的实例化 一个类的实现包括两部分:类声明和类体。、类声明[public][abstract][final] class className [extends superclassName] [implements interfaceNameList] {……} 期中修饰符[public][abstract][final]说明类的属性className为类名 superclassName为父类的名字 interfaceNameList为类实现的接口列表、类体类体定义如下 class className { [public|protected|private] [static] [final] [transient] [volatile] Type variableName; //成员变量

Java实验指导4继承与多态

《Java程序设计》实验指导 实验四继承与多态 一、实验目的: 1.掌握类的继承方法。 2.掌握变量的继承和覆盖。 3.掌握方法的继承、重载和覆盖。 4.了解接口的实现方法。 二、实验原理 新类可从现有的类中产生,并保留现有类的成员变量和方法,并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。 当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。 Java 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如果你设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。 语法格式: 类访问限定符子类名extends 父类名{ …… }

三、实验内容及要求: 1. 定义一个接口(ShapeArea),其中包含返回面积的方法(getArea)。定义一个矩形类(Rectangle),派生出一个正方形类(Square),再定义一个圆类(Circle),三者都要求实现接口ShapeArea,自行扩充成员变量和方法。在主方法中建一数组,数组中放入一些上述类型的对象,并计算它们的面积之和。 2. 运行下面的程序,理解成员变量的继承与隐藏,方法的覆盖与重载。 class A{ int sum,num1,num2; public A(){ num1=10; num2=20; sum=0; } void sum1(){ sum=num1+num2; System.out.println("sum="+num1+"+"+num2+"="+sum); } void sum2(int n){ num1=n; sum=num1+num2; System.out.println("sum="+num1+"+"+num2+"="+sum); }

Java实验五继承与多态

实验五继承与多态 一、实验目的 1.掌握抽象类的声明; 2.掌握多态的执行机理; 3.掌握上转型的使用; 4.掌握构造方法的执行机理; 5.面向抽象的编程; 二、实验内容 1.假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生, 如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计: (1)设计一个基类Student描述学生的共同特征。 (2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。 (3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。 (4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输出相关信息。 2.假定要为某个公司编写雇员(40个雇员)工资支付程序,这个公司有各种类型 的雇员(Employee),不同类型的雇员按不同的方式支付工资: (1)经理(Manager)——每月获得一份固定的工资 (2)销售人员(Salesman)——在基本工资的基础上每月还有销售提成。(3)一般工人(Worker)——则按他每月工作的天数计算工资。 根据上述要求试用类的继承和相关机制描述这些功能,并编写一个Java Application程序,演示这些类的用法。(提示:应设计一个雇员类(Employee)描述所有雇员的共图特性,这个类应该提供一个计算工资的抽象方法ComputeSalary( ),使得可以通过这个类计算所有雇员的工资。经理、销售人员和一般工人对应的类都应该继承这个类,并重新定义计算工资的方法,进而给出它的具体实现。(用对象数组) 三、实验报告涉及以下内容 1.继承中父子构造方法的执行关系 2.重写 3.super的应用 4.上转型 5.多态

JAVA基础 第4章继承与多态_练习题_200910

第4章继承与多态一.选择题 1、编译与运行以下两文件结果就是( D )。 //文件P1、java package MyPackage; class P1{ void afancymethod(){ System、out、println("What a fancy method"); } } //文件P2、java package YourPackage; import MyPackage、*; public class P2 extends P1{ public static void main(String argv[]){ P2 p2 = new P2(); p2、afancymethod(); } } A.两个均通过编译,P2运行时输出What a fancy method B.没一个通过编译 C.两个均通过编译,但P2运行时出错 D.P1 通过编译,但P2出现编译错误 2.下列程序运行的结果就是( A )。 package a; package b; public class D{ public static void main(String args[]) { System、out、println("^_^,今天心情不错!"); } } A.出现编译错误 B.^_^,今天心情不错! C.通过编译,运行时出错 D.以上都不对 3.Java的核心类库中哪个包,Java系统能自动引入( B )。 A.java、io B.java、lang C.java、net D.java、util 4.下列程序运行结果就是( A )。 private class Base{ Base(){ int i = 100; System、out、println(i); }

Java实验报告(四)继承和多态

福建农林大学计算机与信息学院实验报告 实验(四)继承和多态 一、实验目的和要求 1.掌握面向对象的继承关系 2.理解面向对象的多态 3.掌握方法的重写 4.掌握接口的实现 二、实验内容和原理 设计一个抽象类Shape,包括2个抽象方法,分别是计算形状的周长和面积。设计具体类Rectangle和Circle,分别表示矩形和圆,它们都是Shapes的子类。使Rectangle和Circle都实现Comparable接口(根据面积比较大小),编写一个通用的排序程序和一个通用的二分查找程序(自己写代码实现),能对这二种类型的数组进行排序并查找指定的对象。 三、实验环境 1.硬件环境: 2.软件环境:JDK1.5 四、算法描述及实验步骤 1.算法描述(可以用类图、流程图、伪代码或源程序描述) … 对实现了Comparable接口的对象数组data进行排序 public static void sort(Comparable[] data) 在实现了Comparable接口的对象数组data中查找元素element public int binarySearch(Comparable[] data, Comparable element)

2.实验步骤 ●创建一个UML项目,并设计类Shape、Rectangle和Circle,并建立 描述Shape、Rectangle、Circle和Comparable间关系的类图 ●创建一个Java应用项目 ●把UML项目中的类自动生成代码到Java应用项目中 ●实现类中的方法及通用的排序和检索程序 ●进行编译 ●进行测试,使用的测试用例: 输入:预期输出: … 五、调试过程 1.编译过程

JAVA基础第章继承与多态练习题

第4章继承与多态一.选择题 1. 编译和运行以下两文件结果是( D )。 //文件P1.java package MyPackage; class P1{ void afancymethod(){ System.out.println("What a fancy method"); } } //文件P2.java package YourPackage; import MyPackage.*; public class P2 extends P1{ public static void main(String argv[]){ P2 p2 = new P2(); p2.afancymethod(); } } A.两个均通过编译,P2运行时输出What a fancy method B.没一个通过编译 C.两个均通过编译,但P2运行时出错 D.P1 通过编译,但P2出现编译错误 2.下列程序运行的结果是(A )。 package a; package b; public class D{ public static void main(String args[]) { System.out.println("^_^,今天心情不错!"); } } A.出现编译错误 B.^_^,今天心情不错! C.通过编译,运行时出错 D.以上都不对 3.Java的核心类库中哪个包,Java系统能自动引入(B )。 A.java.io B.https://www.wendangku.net/doc/ca12540858.html,ng C.https://www.wendangku.net/doc/ca12540858.html, D.java.util 4.下列程序运行结果是( A )。 private class Base{ Base(){ int i = 100; System.out.println(i); }

实验报告二 Java类的封装、继承、多态

Java实验二类的封装、继承、多态 一.实验目的 1. 复习、理解OOP的三大特征——封装、继承和多态。 2. 学会使用Java编写简单的类。理解类的属性和方法。 3.掌握关键字private, protected, public的作用,掌握静态类,内部类的概念。 4. 掌握多态的概念。 二.实验内容 2.1程序要求 1.分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求: (1)Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。 (2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。 (3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法: Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可 实现对Point3D的成员变量x, y,z的初始化。 (4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。 (5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D 的对象p3d1,p3d2,打印出他们之间的距离。 提示:https://www.wendangku.net/doc/ca12540858.html,ng..Math.sqrt()方法 2.创建一个数组,随机生成Point2D或者Point3D的对象放于其中。最后依次调用数组中每个对象的“打印方法”,显示数组中存储的对象是什 么。 提示:https://www.wendangku.net/doc/ca12540858.html,ng..Math.random()方法或者java.util.Random类2.2 设计工作 设计思路: 构造Point 2D类,私有成员x,y存放2D点位置坐标,构造函数传入坐标值。Offset()函数平移2D点,get_x(),get_y()分别返回x,y坐标。Print()函数打印

北京信息科技大学Java语言程序设计-继承和多态

【实验名称】实验3 继承和多态 【实验目的】 1、理解Java对类的继承使用方式。 2、对照学习和掌握Java对类的对象使用和继承使用方式。 3、学习和掌握Java继承的实现方法。 4、初步学习Java基于继承和多态的通用程序设计方法。 【实验日期和时间记录】 实验预习时间:2014.5.14—2014.5.21 实验过程时间:2014.5.23 20:00—22:42 【实验内容】 1、(账户类Account)根据编程练习8.7(P238),实现一个账户类Account。第一步,根据编程练习8.7的描述,画出Account类的UML类图。第二步,编写实现Account类。第三步,编写Account类的测试程序,测试Account类的基本功能。【实验预习】 1.问题描述:创建一个Account类,打印余额、月利息以及这个账户的开户日期。 2.输入的是ID号,余额,年利率及取款额和存款额; 处理:调用Account类中的函数 输出:输出余额,月利息以及这个账户的开户日期 3.技术支持:访问器及修改器;类和对象的建立;调用方法等。 4.具体过程:画出类的UML图,然后写代码:先写account类,在写主方法; 5:日期及时间:2014.5.23 20:00—22:42 【UML图】 【附程序代码】 public class testAccount{ public static void main(String[]args){ Account account=new Account(1122,20000);//创建一个账户ID为1122,余额为20000美元的对象 account.setAnnualInterstRate(4.5);//该对象的年利率为4.5% account.withDraw(2500);//取款2500美元 account.deposit(3000);//存款3000美元

实验5:Java继承与多态

实验5:Java继承与多态 一、实验目的 (1)掌握Java类的继承关系和派生方法 (2)理解多态的概念和使用。 二、实验设备要求 JDK 6.0、JCreator和NetBeans 6.9 三、实验内容 1.阅读如下所示的3个Java类的定义,分析它们之间的关系,写出运行结果。

2.假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果3门课程的平均分数超过60分即表示通过,而对于研究生,则需要平均超过80分才能够通过。根据上述要求,请完成以下Java类的设计: (1)设计一个基类Student描述学生的共同特征。 (2)设计一个描述本科生的类Undergraduate,该类继承并扩展Student类。 (3)设计一个描述研究生的类Graduate,该类继承并扩展Student类。 (4)设计一个测试类StudentDemo,分别创建本科生和研究生这两个类的对象,并输 出相关信息。 运行结果如下:期中Tom和Mary的三科平均成绩可以不同,结果必须是两个,一个可以拿到学位,一个不可以拿到学位。 编程思路: 1.本程序一共包括四个类:一个基类Student,两个子类Undergraduate(本科生类)和Graduate(研究生类),测试类StudentDemo。(请同学们按照这个编程顺序逐一完成各个类的结构。) 2.Student类包括 (1)共有属性:学生姓名,课程1成绩,课程2成绩,课程3成绩,它们的访问控制属性都是private; (2)共有方法:构造方法(完成对私有数据成员的赋值),获得学生姓名方法(用于返回学生姓名),获得平均分(用于返回学生三门课程的平均分)。 3.Undergraduate类:构造方法(调用父类的有参构造方法),判断是否通过方法(平均分大于等于60就通过,否则不通过,并输出结果)。 4.Graduate类:构造方法(调用父类的有参构造方法),判断是否通过方法(平均分大于等于80就通过,否则不通过,并输出结果)。 5.StudentDemo类:main方法(分别定义Undergraduate类和Graduate类的对象,并通过对象调用判断是否通过方法,输出结果)。

Java继承与多态实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称: 继承与多态 专业名称: 计算机科学与技术 班级: 计科1405班 学生姓名: 高宏伟 学号: 指导教师: 刘霞林 实验日期: 2016、10、13 一、实验目的 通过编程与上机实验理解Java 语言的继承与多态特性,掌握变量的隐藏、方法的覆盖、重载,掌握抽象类与接口的使用。 二、实验要求 1、编写体现类的继承性(成员变量、成员方法、成员变量隐藏)的程序。 2、编写体现类的多态性(成员方法重载)的程序。 3、编写体现类的多态性(构造方法重载)的程序。 4、编写使用接口的程序。 三、实验内容 (一)类的继承 1、创建公共类Student、 (1)编写程序文件Student、java,源代码如下: public class Student { protected String name; //具有保护修饰符的成员变量

protected 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;

Java继承与多态汇总

} 实验目的: 通过本次实验,要求学生能进一步掌握继承和多态的概念,熟练定义类、 派生类、抽象类、抽象方法、虚拟方法和重载方法。 实验条件: 电脑一台、能上网查阅资料。 首先定义基本几何图形的抽象基类(Sha pe ),然后定义Sha pe 的派生类 Circle (圆形)、Square (正方形)和Triangle ( 三角形)。要求通过抽象方法、 虚拟方法和重载方法来计算各种图形的面积和周长。 (提示:求三角形的面积 S = J L * (L-a)* (L-b)* (L-c),其中 a,b,c 是三角形的边长, Shap e.java p ackage com.lit.jsj.work3; p ublic abstract class Shape { com.lit.jsj.work3.Sha pe; class Square exte nds Shape{ ! double d; p ublic double getD() { return d; p ublic void setD( double d) { this . d = d; 课程名称 实验名称 学生学号 实验报告 面向对象程序设计 实验三、继承与多态 姓名 日期 班级 2016-9-30 L=(a+b+c)/2 源代码: ,即周长的一半。) 用海伦公式: p ublic abstract p ublic abstract } double getLe ngth(); double getArea(); Square.java package com.lit.jsj.work3; import public ( P rivate

java类的继承和多态

第八章类的继承和多态 教学目的: 深刻理解类的继承 教学内容: 1、类的继承和实现 2、构造器的调用 3、防止类的继承 一、类的继承和实现 所谓继承就是在已经存在类的基础上再扩展新的类。已经存在的类我们称父类、超类、基类。新产生的类,我们称子类、派生类。子类拥有父类的所有特性。当然我们也可以在子类中添加新的方法和成员变量,这些新添加的方法和成员变量仅仅属于子类。 在Java中通过关键字“extends”来实现。 比如在学生类中,有一种特殊的学生就是学生干部,他们出来拥有和普通学生一样的方法和属性之外,有的有一个职务描述(Duty)。 我们定义学生管理类ClassManger,它拥有父类的所有的方法和属性。 一般来讲,应该把相对通用的方法都放在父类中,只有更具体和专门的方法放在子类中。 1、对于学生干部而言,我们要添加一个属性就可以了 private String duty=””; 2、但是student里的print()就不能满足我们的ClassMange的要求了。而且student的构造方法也不能直接用来ClassMange上。 那么我们怎么定义ClassMange()和print()呢?如果重新写很麻烦,可不可以在父类方法的基础上修改呢?只要使用关键字super就可以了。 this:一个对象的引用。 super:是用来告诉编译器调用父类的方法的关键字。 代码如下: class school { public static void main(String[] args) { student[] stu=new student[3]; stu[0]=new ClassMange("章三","2009001","班长"); stu[1]=new student("李四","2009002"); stu[2]=new student("王五","2009003"); /* for (int i=0;i

相关文档
相关文档 最新文档