JAVA使用继承和多态解决公司支出的总薪水问题

abstract class Employee {
public abstract double earnings();
}
class YearWorker extends Employee {
//重写earnings()方法
}
class MonthWorker extends Employee {
//重写earnings()方法
}
class WeekWorker extends Employee {
//重写earnings()方法。
}
class Company {
Employee[] employee;
double salaries=0;
Company(Employee[] employee) {
this.employee=employee;
}
public double salariesPay() {
//计算salaries。
}

}
public class CompanySalary {
public static void main(String args[]) {
Employee [] employee=new Employee[29]; //公司有29名雇员
for(int i=0;i<employee.length;i++) { //雇员简单地分成三类
if(i%3==0)
employee[i]=new WeekWorker();
else if(i%3==1)
employee[i]=new MonthWorker();
else if(i%3==2)
employee[i]=new YearWorker();
}
Company company=new Company(employee);
System.out.println("公司薪水总额:"+company.salariesPay()+"元");
}
}
上述代码中要重写earnings方法,和计算salaries,怎么做呀,资料的讲解不会,要是增加多增加一种雇员该怎么改代码?

2个回答

 class YearWorker extends Employee {
//重写earnings()方法
@override
public double earnings() {
return 2000;
}
}
class MonthWorker extends Employee {
//重写earnings()方法
@override
public double earnings() {
return 3000;
}
}
class WeekWorker extends Employee {
//重写earnings()方法。 
@override
public double earnings() {
return 4000;
}
}
薪水我随便定的哦

增加一种雇员你按照现有的加上一个新的类
class XXXWorker extends Employee
重写 earnings()
用 employee[i]=new XXXWorker(); 创建

public double salariesPay() {
//计算salaries。
double sum = 0;
for (Employee e : employee)
{
sum += e.earnings();
}
return sum;
}

重写earings()方法:

 YearWorker:
 public double earings(){
 return 40000;
 }
 MothWorker;
 public double earings(){
 return 12*3000;
 }
 WeekWorker;
 public double earings(){
 return 12*4*700;
 }

如果增加一种雇员,需要在Emplyee类中再增加一类重写方法,假设是DayWorker,增加一类重写方法

 public double earnings(){
 return 365*100;
 }

同时在CompanySalary中,修改循环语句:

 for(int i=0;i<emploree.length;i++){
 if(i%4==0)
 employee[i]=new DayWorker();
  if(i%4==1)
 employee[i]=new WeekWorker();
  if(i%4==2)
 employee[i]=new MothWorker();
  if(i%4==3)
 employee[i]=new YearWorker();
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java的继承中多态问题
java的继承中多态问题this关键字多态源代码输出结果总结 this关键字 this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 this 的用法在 Java 中大体可以分为3种: (1)this调用本类中的属性,也就是类中的成员变量; (2)this调用本类中的其他方法; (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行 。 多态 多态通常体现在...
有关java 继承和多态的问题
请看如下代码:rnrnpublic class Base // 父类Basern int i=1;rn public void amethod()rn System.out.println("Base.amethod()"); rn rn public Base()rn this.amethod();rn rnrnpublic class Descend extends Base // 子类Descendrn int i=-1;rn public static void main(String[] arg)rn Base b=new Descend();rn System.out.println(b.i);rn b.amethod(); rn rn public void amethod()rn System.out.println("Descend.amethod()");rn rnrn为什么运行结果是rnDescend.amethod()rn1rnDescend.amethod()rnrn而不是rnBase.amethod()rn-1rnDescend.amethod()rn请各位大虾帮忙分析分析rn
Java封装、继承和多态
前言:假如生活欺骗了你,
JAVA封装,继承,多态
封装,继承,多态,这是面向对象的三大特性了。  1.封装:是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏封装是类的特征之一,应该很好理解,像一些私有的,别的类不可以访问了啊,都有访问权限的,比较安全了。  2.继承:指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。     继承有三种方式
java接口继承与多态
1.接口 java语言只支持单重继承不支持多重继承,一个类只能有一个父类extends。但是在实际运用中,常需要多继承来解决问题。 为了解决该问题,java语言提供了接口来实现类的多重继承功能。 package month8; public class Day11 { public static void main(String[] args) { // TODO Auto-g
java里的继承与多态
学习java之前最开始是从c入门的,然后就只有面向过程的那种思想,后来接触java,就有点蒙了的感觉,虽然处处有相同点,但是学到后来发觉思想有点跟不上,还记得曾经被继承多态困了我几个小时。也是挺怀念的。这里就举一个简单的实例来说一说多态继承。 abstract class Role { //这里的父类是一个抽象类,可以自己去查查。就不多说了。 void fight(){ } } cla
java 基于继承 的多态
多态:同一个对象(事物),在不同时刻体现出来的不同状态。 多态的前提:      1:要有继承关系。      2:要有方法重写。              其实没有也是可以的,但是如果没有这个就没有意义。                  Father f= new SonA();                  f.show();                 Father f = n...
Java的继承和多态
继承可以有效实现代码复用 子类自动继承父类的属性和方法,子类中不再存在重复代码 1.super调用父类的构造方法(构造方法不能被继承,所以要用super调用) 2.super调用父类的普通方法(用于同名的方法进行覆盖) overload (重载) override(重写、覆盖) 多态的本质: 1.存在着一个继承关系 2.一定会存在着一个重写(覆盖)方法 3.一定会存在着一个父类向...
Java中的继承与多态
封装、继承、多态是面向对象语言的三大特性。多态本质上是将接口与实现细节分离,在具体的程序设计中是实现高扩展性的关键。特别是一些框架类型的项目,框架定义接口并提供默认的接口实现,开发者也可以提供自己的接口实现,从而实现框架的高可扩展性。 1、多态与向上转型 向上转型(upcasting),就是将派生类当成基类使用,这个理论上很容易理解。因为基类拥有的方法、成员,派生类一定也有,派生类中的方法、成...
java封装 继承与多态
java封装 继承与多态 程序设计 类与对象
java 继承和多态
学习java的好工具,让你更加容易理解java的基本概念!
《Java 程序设计》— 继承与多态
man you = new Chinaman(); you.say(); Chinaman me = new Wuhanman(); me.say(); } }     super与this:         关键字super指向父类对象;关键字this指向当前类对象本身。(它们是实例成员变量,不能用于静态方法之中) 1、在对象创建时使用super和this     1)如果父类的构造器重载了,通过super指定调用哪个父类构造器。     2)如果子类自己的构造器重载
Java 继承和多态
新建一个父类 public class Animal { private String name; private String color; public void eat () { System.out.println(&amp;amp;amp;amp;amp;quot;吃东西...&amp;amp;amp;amp;amp;quot;); } public String getName() { return ...
java学习笔记--继承和多态
11.2 父类和子类- Java就只允许单继承,若要多继承可以用接口来实现11.3 使用super()关键字- 如果要设计一个可以继承的类,最好提供一个无参数的构造方法以避免程序设计出错误。11.6 Object类及其tostring()方法- Java中的所有类都继承来自java.lang.Object类- object类中的tostring()方法```System.out.println(对...
JAVA 封装 继承 多态
封装步骤:1.使用private修饰需要被封装的属性。 2.提供一个公共的方法设置或获取该私有成员属性。(set属性名(),get属性名()) 代码:class Member { String name; private String sex; String salary; public void talk(){ System.out.println(
Java学习笔记:继承与多态
Java学习笔记:继承与多态 在这个星期的Java课实验课中,实验内容是继承与多态,当我刚看到题目时,竟然不知道该从何处下手,最近一个月在忙着做安卓,一直也没写博客学习笔记,Java也没怎么认真看,一个暑假的学习竟然忘了不少,实在是捡了芝麻丢了西瓜。在思考了一个多小时之后,并且是在把书中关于继承与多态的部分又看了一遍后,才终于有了思路。好了废话不多说,让我们看一下这道题。 Cola公司的雇员分
java 封装 继承 多态
面向对象编程(Object Oriented Programming)有三大特性:封装、继承、多态。在这里,和大家一起加深对三者的理解。 封装 封装可以拆开理解,装,是把数据和方法放进了类里;封,把装进去的数据和成员方法加上访问权限。对于外界,内部细节是透明的,暴露给外面的是它的访问方法。 继承 继承,是为了重用父类代码。两个类若具有is a的关系就可以用extends。另外,继承也为实现多态做了...
Java 继承与多态之转型
Java 继承与多态之转型 向上转型:将子类的对象赋值给父类引用 向下转型:将父类的对象赋值给子类引用(前提是父类对象必须能够转成子类对象) 1、向上转型: public class Person { public String name; public int age = 30; public void work() { Sys...
Java面向对象之继承和多态
1.代码块 (1)关于代码块的概述:用{}括起来的代码,统称为代码; (2) 根据其位置以及声明不同:分为以下       1) 局部代码块: 在main()里面,给变量限定它的生命周期   public static void main(String[] args) {      //局部代码块   {    int x = 10 ;    System.out.println(x)...
Java基础——继承,多态
在覆盖一个方法时,子类方法不能低于超类方法的可见性。特别是超类方法是public,子类方法一定要声明为public。 final final类:该类不能被继承。且类的所有方法自动变为final方法(不包括变量)。 final方法:该方法不能被覆盖(重写)。 final变量:该方法初始化之后不允许改变值了。 向上转型和向下转型 记住一点: 无论是向上还是向下转型,对象的类型在内存中是不会...
Java之继承和多态
package 方法的覆盖; /* * 关于方法的覆盖 * 1.什么时候方法要进行方法的重写? * 如果父类中的方法已经无法满足当前子类的业务需要,需要将父类中的方法重新写一遍。 * 2.子类如果重写父类中的方法之后,子类对象一定调用的是重写之后的方法 * 3.方法覆盖的条件: * 第一:发生在具有继承关系的两个类之间 * 第二:必须具有相同的方法名
java 的多态继承
java 的多态继承
java的封装、继承、多态
简单的说下自己对封装、继承、多态的理解。 封装:隐藏细节,把实现和接口分开。 继承:使类可以得到复用,可以向上转型。 多态:在继承基础上,可以覆盖基类的方法,产生不同的实现。也就是同一类型可以有不同的实现,多态的实现是基于动态绑定。
Java 继承与多态(二)
在写完第一篇还没有一会儿,我就开始写这第二篇了, 因为这片的内容与第一篇的内容有着一定的相似性,都是在向上转型以后回头调用子类的成员。还是直接上代码package test;import edu.princeton.cs.algs4.StdOut;class A{ public static void f1(A a){ a.f2(); } public voi
Java——继承、覆写与多态
目录 1.继承的定义与使用 1.1继承的实现 1.2继承的限制 2.覆写 2.1 方法的覆写 2.2 属性的覆写(了解) 2.3 super关键字 3.final关键字——终结器 3.1 final修饰类(String类以及8大基本数据类型的包装类,Integer) 3.2 final修饰方法 3.3 final修饰属性——常量 4.多态 1.继承的定义与使用 继承的...
Java(继承与多态)
Java(继承与多态)
java的封装继承和多态
this在每个类的内部,都有一个隐含的成员变量,该类的类型就是该类的类型,该成员变量的名称是this,this是一个引用,指向自身的对象。this的用法:         1、this调用本类中的属性,也就是类中的成员变量         2、this调用本类中的其他方法         3、this调用本类中的其他构造方法,调用时要放在构造方法的首行面向对象特征之封装(Encapsulation...
【6.23】java的继承与多态
java 继承 多态 继承与多态是面向对象的语言的两个重要的特点,深入的认识对运用好这门编程语言非常重要。 今天的内容包括两部分,概念整理和代码分析。现附上一段今天写的代码,因为对这部分不满意,之后会填坑重写。 import java.util.ArrayList; class Man{ private String name; private Boolean sex;
继承,多态使用
1、继承是指子类复用基类的方法属性并拓展基类的属性,从而使得方法向上兼容,拥有基类的属性的同时拥有自身的属性。 2、多态:相同的方法来处理来自同一基类不同的字类的对象。实现不同类的对象调用同一方法。 3、接口: a可用于定制一套通用的标准。 b拓展需要
java中的继承与多态
java中的继承与多态
Java的封装、继承、多态
Java的封装、继承、多态 封装的基本套路: 类中定义private修饰的私有成员属性,用public修饰的get/set方法对属性取值赋值。 继承的基本套路: 1.子类无条件继承父类中方法、属性。(父类中用private/final修饰的属性和方法在子类中不可见或无法使用,不能被赋值) 2.父类中的构造方法是必须的同时(无论有参、无参)要用public修饰 3.static修饰的方法或属性,被称...
Java 继承与多态(一)
今天在看java编程思想的时候,遇到了一个问题,没有想明白,于是放在这里讨论一下,一面自己忘记。 先上代码吧package test;import edu.princeton.cs.algs4.StdOut;class Cycle{ public int x = 1; static void ride(Cycle c){ System.out.println(""
Java 继承 封装 多态
                  JAVA     Day 03     7/13封装提高安全  封装步骤:1.作用域设置为:private2. 设置属性的get/set 方法Get 方法作用:访问属性Set 方法作用给属性赋值3.通过get/set方法访问或者给属性赋值。class frame{  privateintage;  private String name;   //封装  pub...
Java封装/继承/多态
多态:就是有多种形态,如定义个car,可以通过继承/重写,实现各种各样的car继承:作用是代码的复用,父类的方法可以在子类中使用。并且通过继承,子类还可以进行扩展,实现自己的特性。封装:就是一个对象,他有很多属性,如一个Person有name, age, sex等各种属性。重载:是方法名字一样,但方法参数不一样。重写:方法名字一样,参数也一样。通过继承,子类重写父类方法...
Java:继承与多态
封装、继承和多态性是面对对象程序设计语言的重要特性,想要理解面对对象程序设计思想避不开这三种特性的学习 继承 继承的解释 类是规则,用来制造对象的规则。我们不断地定义类,用定义的类制造一些对象。类定义了对象的属性和行为,就像图纸决定了房子要盖成什么样子。 一张图纸可以盖很多房子,它们都是相同的房子,但是坐落在不同的地方,会有不同的人住在里面。假如现在我们想盖一座新房子,和以前盖的房子很...
java中的多态和继承
我们知道“多态”和“继承”是分不开的哦!我们先写2个类!   Car类 class Car { private String name; private double price; public Car(String name, double price) { super(); this.name = name; this.price = price; } p...
【Java学习笔记】继承和多态
-----------------------------------------------个人初学,如有错误,欢迎指正----------------------------------------------- Java学习笔记之继承和多态 一、简介         面向对象的三大特征就是封装、继承和多态。本篇博文主要介绍后两者,即继承和多态。内容主要有:         1、继
Java之继承与多态
多态存在的必要条件: 1.继承 2.重写 3.父类引用指向子类对象 多态使用实例 平台:ubuntu14.04,环境:eclipse Employee类 package com.anson.java; /** * 雇员类 * 作为Salary的基类 * @author anson * */ public class Employee { private S
Java学习笔记-----继承和多态
** 继承和多态 **
java 封装,继承,多态
封装: public class student { private String name; private int age; private char sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public ...
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview