雇员类含有计算报酬的行为,利用面向对象的()可以使其派生类专职雇员类和兼职雇员类计算报酬的行为有相同的名称,不同的计算方法。A.多态性B.继承性C.封装性D.复用性

题目
雇员类含有计算报酬的行为,利用面向对象的()可以使其派生类专职雇员类和兼职雇员类计算报酬的行为有相同的名称,不同的计算方法。

A.多态性

B.继承性

C.封装性

D.复用性


相似考题

2.●试题五阅读下列程序说明,将应填入(n)处的字句写在答卷纸的对应栏内。【程序说明】对于一个公司的雇员来说,无非有3种:普通雇员、管理人员和主管。这些雇员有共同的数据:名字、每小时的工资,也有一些共同的操作:数据成员初始化、读雇员的数据成员及计算雇员的工资。但是,他们也有不同。例如,管理人员除有这些共同的特征外,有可能付固定薪水,主管除有管理人员的共同特征外,还有其他物质奖励等。3种雇员中,管理人员可以看作普通雇员的一种,而主管又可以看作管理人员的一种。我们很容易想到使用类继承来实现这个问题:普通雇员作为基类,管理人员类从普通雇员类中派生,而主管人员类又从管理人员类中派生。下面的程序1完成上述各个类的定义,并建立了3个雇员(一个普通雇员、一个管理人员和一个主管)的档案,并打印出各自的工资表。将"程序1"中的成员函数定义为内联函数,pay成员函数定义为虚函数,重新完成上述要求。【程序1】//普通雇员类class Employee{public:Employee(char*theName,float thePayRate);char*getName()const;float getPayRate()const;float pay(float hoursWorked)const;protected:char*name;//雇员名称float payRate;//薪水等级};Employee::Employee(char*theName,float thePayRate){name=theName;payRate=thePayRate;}char*Employee::getName() const{return name;}float Employee::getPayRate()const{return payRate;}float Employee::pay(float hoursWorked)const{return hoursWorked*payRate;}//管理人员类class Manager∶public Employee{public://isSalaried付薪方式:true付薪固定工资,false按小时付薪Manager(char*theName,float thePayRate,bool isSalaried);bool getSalaried()const;float pay(float hoursWorked)const;protected:bool salaried;};Manager::Manager(char*theName,float thePayRate,bool isSalaried)∶Employee(theName,thePayRate){salaried=isSalaried;}bool Manager::getSalaried() const{return salaried;}float Manager::pay(float hoursWorked)const{if(salaried)return payRate;/*else*/return Employee::pay(hoursWorked);}//主管人员类class Supervisor:public Employee{public:Supervisor(char*theName,float thePayRate,float theBouns):Employee(theName,thePayRate, (1) ),bouns(theBouns){}float getBouns()const{return bouns;}float pay(float hoursWorked)constreturn (2) ;}protected:float bouns;}#include"iostream.h"void main(){Employee e("Jack",50.00);Manager m("Tom",8000.00,true);Supervior s("Tanya",8000.00,8000.00);cout<<"Name:"<<e.getName()<<endl;cout<<"Pay:"<<e.pay(80)<<endl;//设每月工作80小时cout<<"Name:"<<m.getName()<<endl;cout<<"Pay:"<<m.pay (40) <<endl;cout<<"Name:"<<s.getName()<<endl;cout<<"Pay:"<<s.pay (40) <<endl;//参数40在这里不起作用}【程序2】#include"employee.h"//普通雇员类class Employee{public://构造函数Employee(string theName,float thePayRate):name(theName),payRate(thePayRate){}//取雇员姓名string getName() const{returnname;}//取雇员薪水等级float getPayRate()const{return payRate;}//计算雇员薪水virtual float pay(float hoursWorked)const{return (3) ;}protected:string name;//雇员名称float payRate;//薪水等级};//管理人员类//继承普通雇员类class Manager:public Employee{public://构造函数//isSalaried标识管理人员类的付薪方式//true 按阶段付薪(固定工资)//false按小时付薪Manager(string theName,float thePayRate,bool isSalaried):Employee(theName,thePayRate),salaried(isSalaried){}//取付薪方式bool getSalaried()const{return salaried;}//计算薪水virtual float pay(float (4) )const;protected:bool salaried;};float Manager::pay(float hoursWorked)const{if(salaried)//固定付薪方式return payRate;else//按小时付薪return (5) ; }//主管人员类class Supervisor: (6){public://构造函数Supervisor(string theName,float thePayRate,float theBouns):Manager(theName,thePayRate,true),bouns(theBouns){}//取奖金数额float getBouns()const{return bouns;}//计算薪水virtual float pay(float hoursWorked)const{retum payRate+bouns;}(7)float bouns;}#include"employee.h"#include"iostream.h"void main(){(8) *ep[3];ep[0]=new Employee("Jack","50.00");ep[1]=new Manager("Tom","8000.00",true);ep[2]=new Supervior("Tanya","8000.00","8000.00");for(int i=0;i<3;i++){cout<<"Name:"<< (9) <<endl;cout<<"Pay:"<< (10) <<endl;//设每月工作80小时}}

参考答案和解析
参考答案:A
更多“雇员类含有计算报酬的行为,利用面向对象的()可以使其派生类专职雇员类和兼职雇员类计算报酬的行为有相同的名称,不同的计算方法。 ”相关问题
  • 第1题:

    在人事管理系统中,计算企业员工的报酬可以利用面向对象的()技术,使系统可以用有相同名称、单不同核算方法的对象来计算专职员工的和兼职员工的报酬。

    A.多态

    B.继承

    C.封装

    D.复用


    正确答案:A

  • 第2题:

    一般而言,雇主所承担的对雇员的责任,包括( )所致的雇员人身损害赔偿责任。

    A.雇主自身的故意行为
    B.雇主自身的过失行为
    C.雇主自身的无过失行为
    D.雇员的故意行为
    E.雇员的过失行为

    答案:A,B,C
    解析:

  • 第3题:

    以下关于类的继承的说法正确的是()。

    A.派生类无法获取基类的私有数据和行为,其他所有数据和行为都可被获取。

    B.派生类调用构造函数之前会自动调用基类的参数列表相同的构造函数。

    C.派生类对象实例化的时候可以赋给父类类型的对象。

    D.派生类的析构函数调用之后会自动调用父类的析构函数。


    派生类无法获取基类的私有数据和行为,其他所有数据和行为都可被获取。;派生类对象实例化的时候可以赋给父类类型的对象。;派生类的析构函数调用之后会自动调用父类的析构函数。

  • 第4题:

    在人事管理系统中,计算企业员工的报酬可以利用面向对象的()技术,使系统可以用有相同名称、但有不同核算方法的对象来计算专职员工和兼职员工的报酬。

    A.多态

    B.继承

    C.封装

    D.复用


    正确答案:A

  • 第5题:

    在人事管理系统中,计算企业员工的报酬可以利用面向对象的( )技术,使系统可以用有相同名称、但不同核算方法的对象来计算专职员工的和兼职员工的报酬。

    A.多态
    B.继承
    C.封装
    D.复用

    答案:A
    解析:
    多态性是一种方法,这种方法使得在多个类中可以定义同一个操作或属性名,并在每个类中可以有不同的实现。多态性使得一个属性或变量在不同的时期可以表示不同类的对象。
    封装是将相关的概念组成一个单元,然后通过一个名称来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。
    继承表示类之间的层次关系,这种关系使得某类对象可以继承另外一类对象的特征和能力,继承又可分为单继承和多继承,单继承是子类只从一个父类继承,而多继承中的子类可以从多于一个的父类继承,Java是单继承的语言,而C++允许多继承。假设类B继承类A,即类B中的对象具有类A的一切特征(包括属性和操作)。
    软件复用是指将已有的软件及其有效成分用于构造新的软件或系统。组件技术是软件复用实现的关键。
    因此,综上所述答案为A。