实验6 多态性和虚函数(一)

定义一个Animal,该类中可以存放动物的名字,并有一个Identity函数用于显示动物的种类。定义两个类Cat和Dog,都继承自Animal,并重载Identity函数,不但要显示动物的种类,还要显示动物的名字。


#include<iostream>

#include<string>

using namespace std;



class Animal

{

protected:

    string Ani_name;

    string Ani_species;

public:

    Animal(string name, string species = "初始化")

        :Ani_name(name), Ani_species(species)

    { }

    virtual void identity()

    {

        cout << Ani_species << endl;

    }

};



class Cat : public Animal

{

public:

    Cat()

        :Animal("汤姆", "猫")

    { }



    void identity()

    {

        cout << "名字:" << Ani_name << endl;

        cout << "种类:" << Ani_species << endl;

    }

};



class Dog : public Animal

{

public:

    Dog()

        :Animal("斯派克", "狗")

    { }



    void identity()

    {

        cout << "\n名字:" << Ani_name << endl;

        cout << "种类:" << Ani_species << endl;

    }

};



int main()

{

    Cat cat;

    Dog dog;



    cat.identity();

    dog.identity();



    return 0;

}


定义一个教师类,由教师类派生出讲师、副教授、教授类。教师的工资分别由基本工资、课时费和津贴构成。假设讲师、副教授、教授的基本工资分别为800、900、1000元,课时费分别为每小时40、45、50元,津贴分别为1300、1800、2300。定义虚函数来计算教师的工资,并通过主函数来进行验证。


#include<iostream>

#include<string>

using namespace std;



class Teacher

{

protected:

    double Tea_basicWage;

    double Tea_classFee;

    double Tea_perk;

public:

    Teacher(int basicwage, int classfee, int perk)

        :Tea_basicWage(basicwage), Tea_classFee(classfee), Tea_perk(perk)

    { }



    virtual void sum_wage()

    {

        cout << "工资:" << Tea_basicWage + Tea_classFee + Tea_perk <<endl;

    }

};



class Lecturer : public Teacher

{

public:

    Lecturer()

        :Teacher(800, 40 ,1300)

    {

        cout << "\n讲师" << endl;

    }

};



class Associate_professor : public Teacher

{

public:

    Associate_professor()

        :Teacher(900, 45 ,1800)

    {

        cout << "\n副教授" << endl;

    }

};



class Professor : public Teacher

{

public:

    Professor()

        :Teacher(1000, 50 ,2300)

    {

        cout << "\n教授" << endl;

    }

};



int main()

{

    Lecturer lec;

    lec.sum_wage();

    Associate_professor Apro;

    Apro.sum_wage();

    Professor pro;

    pro.sum_wage();



    return 0;

}


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
、Person多态性设计。 设计一个Person,其中包含一个方法pay(),计算工资支出。再从Person派生出助教(Assistant)、讲师(Instructor)、副教授(AssistantProfessor)和教授(Professor)。其中:工资支出=基本工资+授课时数teachingHours*每课时课金。 助教基本工资为800元,每课时课金25元;讲师基本工资为1000元,每课时课金35元;副教授基本工资为1200元,每课时课金40元;教授基本工资为1400元,每课时课金50元;在主方法中显示各人员的工资支出。用以下两种方式实现: ○1将Person设计为抽象,pay()为抽象方法,设计程序实现多态性。 ○2将Person设计为接口,设计程序实现多态性。 提示:设置授课时数teachingHours为成员变量,计算工资支出为成员方法,考虑是否定义构造方法。 2、编写一个Java程序,在程序中定义一个接口Achievement,其中有一个计算平均分的抽象方法avg();定义一个Person,其中有数据成员:姓名name和年龄age,构造方法初始化数据成员name和age,重写toString()方法显示成员信息;定义一个Student继承Person并实现接口Achievement,增加数据成员:语文成绩chnScore、数学成绩mathScore和英语成绩engScore,增加设置三门课成绩的setScore()方法,并实现接口Achievement的计算平均分的抽象方法avg(),主函数中测试,部分代码如下所示: Student s=new Student(“张三”,16); //创建子对象 System.out.println(s.toString()); //显示s的个人信息,调用继承的toString方法 s.setScore(80,88,95); //设置三门课的成绩 System.out.printf(“三门课的平均分:%.2f”, s.avg()); //显示对象s的三门课的平均分 输出结果如下: 姓名:张三,年龄:16 三门课的平均分:87.67 3、编写一个Java程序,在程序中定义一个School,在School定义一个内部Student,分别创建这两个的对象,访问各个对象中的方法,其中: School: 数据成员:学院名称schoolName; 成员方法:显示信息方法showSchoolMsg():在方法中创建内部Student的对象,并显示该对象的信息(调用内部Student的显示信息的成员方法)。 Student: 数据成员:姓名sname,年龄sage; 构造方法,初始化姓名sname、年龄sage以及所属学院名(即外部数据成员:学院名称schoolName); 成员方法:显示信息showStudentMsg(),显示的信息包括:姓名、年龄以及所属学院名。 主函数中测试,部分代码如下所示: …… // 创建外部School的对象 …… // 通过外部对象调用其显示信息的方法showSchoolMsg() System.out.println(“-------------我是华丽的分割线-------------”); …… // 创建内部Student的对象 …… // 通过内部对象调用其显示信息的方法showStudentMsg()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值