工学院计算机系 Java程序设计 实验指导
private int id;
public Employee(String n, double s,int id1) {
name = n; salary = s; id = id1; }
public String getName() {
return name; }
public void setName(String name1) {
name=name1; }
public void setSalary(double salary1) {
salary=salary1; }
public double getSalary() {
return salary; }
public int getId() {
return id; }
public void setId(int id1) {
id=id1; } }
21
工学院计算机系 Java程序设计 实验指导
2)定义子类Manager,Manager中覆盖父类的getSalary()方法,使得最后的工资是基本工资和奖金之和。在子类Manager中再定义一个可以设置职务信息的setter方法,同时定义一个可以获取职务信息的getter方法。 源代码如下:
class Manager extends Employee//定义Manager类,用来记录经理的姓名、薪水和员工编号信息 {
private String duty;//设置职务的成员变量 private double bonus;//设置奖金的成员变量
public Manager(String n, double s,int id1,String d) {
super(n,s,id1); duty=d; bonus=0; }
public String getDuty() {
return duty; }
public void setDuty(String duty1) {
duty=duty1; }
public void setBonus(double b)//设置奖金的方法 {
bonus=b; }
public double getSalary()//覆盖父类的getSalary()方法 {
double baseSalary=super.getSalary(); return baseSalary+bonus; } }
3)在主类TestInheritanceDemo中,先创建父类Employee的一个对象,并通过通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:1,姓名:
22
工学院计算机系 Java程序设计 实验指导
王笑,年薪:20000.0”。然后创建子类Manager的一个对象,并通过调用四个setter和getter方法,输出下列信息:“员工编号:2,姓名:李东,职务:经理,年薪:50000.0”。 源代码入下:
public class TestInheritanceDemo {
/** Creates a new instance of TestInheritanceDemo */ public TestInheritanceDemo() { }
public static void main(String args[]){
Employee e = new Employee(\张三\ e.setName(\王笑\ e.setId(1);
e.setSalary(20000);
System.out.println(\员工编号:\,姓名:\+ \年薪: \+ e.getSalary());
Manager m = new Manager(\李四\经理\ m.setName(\李东\ m.setId(2);
m.setBonus(30000);
System.out.println(\员工编号:\,姓名:\+ \职务: \+m.getDuty()+\年薪: \ } }
四.思考练习
1.设计一个Dog类,有名字、颜色、年龄等属性,定义构造方法用来初始化类的这些属性,定义方法输出Dog的信息。编写应用程序使用Dog类。
2.定义一个接口ClassName,接口中只有一个抽象方法getClassName( ).设计一个类Horse,该类实现接口ClassName中的方法getClassName( ),功能是获取该类的leiming。编写应用程序使用Horse类。
23
工学院计算机系 Java程序设计 实验指导
实验十 类的多态性的运用
一、实验目的
通过本次实验,掌握类的多态的实现方法,能根据实际需要适当的运用类的多态
的实现方法。 二、实验内容
1. 通过一个计算圆的面积的实例,掌握类的继承与方法覆盖的运用。 算法分析:
1)定义一个父类Area,该类中有getarea方法根据输入半径用来计算圆的面积。 2)定义子类Circle,该子类在继承父类已有功能的基础上覆盖了getarea方法,返回半圆的面积。
3)定义主类AreaDemo,在主类AreaDemo中分别将父类和子类实例化,分别输出圆和半圆的面积。 2.成员方法重载的实验。 算法分析:
1) 定义一个名为IntSort的类,在该类中定义了两个同名方法sort分别实现对2
个整数和3个整数按从大到小的顺序输出的功能。
2)定义主类OverloadDemo,在主类OverloadDemo中,通过调用两个sort方法来实现对2个数和3个数的排序。 三、实验步骤
1、启动JCreator3.50。 2、新建一个名为chapter10的工程,保存路径在为“D:\\学号+姓名(用拼音)\\ chapter10”文件夹下。
3、通过选择[文件]菜单中的[新建文件]命令,实现创建Java运行程序。 四、通过一个计算圆的面积的实例,掌握类的继承与方法覆盖的运用。
通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。 源程序名:AreaDemo .java,以下操作均在AreaDemo .java中实现!
1.定义一个父类Area,该类中有getarea方法根据输入的半径用来计算圆的面积。
源代码如下:
package ch08; class Area{
float r;
float getArea(){ float s;
s=3.14f*r*r; return s; }
}
2.定义子类Circle,该子类在继承父类已有功能的基础上覆盖了getarea方法,返回半圆
24
工学院计算机系 Java程序设计 实验指导
的面积。
源代码如下:
class Circle extends Area{ float getArea(){ float s;
s=3.14f*r*r/2.0f; return s; }
//子类覆盖父类方法,返回半圆面积 }
3.定义主类AreaDemo,在主类AreaDemo中分别将父类和子类实例化,分别输出圆和半圆的面积。
public class AreaDemo {
/** Creates a new instance of AreaDemo */ public AreaDemo() { }
public static void main(String args[]){ //生成父类对象,并输出圆面积 Area a=new Area(); a.r=5.0f;
System.out.println(\的面积为:\ //生成子类对象,并输出半圆面积 Circle b=new Circle(); b.r=6.0f;
System.out.println(\的面积为:\ } }
五、成员方法重载的实验。
通过选择[文件]菜单中的[新建文件]命令,实现以下实例内容。
源程序名:OverloadDemo .java,以下操作均在OverloadDemo .java中实现!
1.定义一个名为IntSort的类,在该类中定义了两个同名方法sort分别实现对2个整数和3个整数按从大到小的顺序输出的功能。
两个数的排序源代码如下: public String sort(int a,int b){ if(a>b)
return a+\ \ else
return b+\ \
25