设计一个Employee类
属性有id,name,sex,salary
有一个抽象的方法doWork();
写一个会计类,Programmer类继承这个类并实例化,工资要覆盖salary
package com.gec.homework;
abstract class Employee {
int id;
String name;
String sex;
int salary = 200;
// 介绍自我的方法
final void info() {
// 介绍自我的方法
intro(id, name, sex);
System.out.println("我每天的工资为:" + salary);
dowork();
}
abstract void dowork();
abstract void salary(int salary);
// @Override
// public String toString() {
// return "Employee [id=" + id + ", name=" + name + ", sex=" + sex + ", salary=" + salary + "]";
// }
private void intro(int id, String name, String sex) {
System.out.println("我的工号为:" + id + " 姓名为:" + name + " 性别为:" + sex);
}
}
class Programmer extends Employee {
@Override
void dowork() {
System.out.println("我每天的工作就是除了负责打代码之外,就是打代码,还是打代码");
}
@Override
void salary(int salary) {
super.salary = salary;
System.out.println("我每天的工资为:" + salary);
}
@Override
public String toString() {
return "Programmer [id=" + id + ", name=" + name + ", sex=" + sex + ", salary=" + salary + "]";
}
}
class Accounting extends Employee {
@Override
void dowork() {
System.out.println("我每天的工作就是记账,数钱,数钱还是数钱!!");
}
@Override
void salary(int salary) {
super.salary = salary;
System.out.println("我每天的工资为:" + salary);
}
@Override
public String toString() {
return "Accounting [id=" + id + ", name=" + name + ", sex=" + sex + ", salary=" + salary + "]";
}
}
public class TestDemo {
public static void main(String[] args) {
Employee e = new Programmer();
// 利用模板设置programmer个人基本信息
e.id = 18052021;
e.name = "钟晓锋";
e.sex = "男";
// 子类调用模板方法
e.info();
System.out.println(e.toString());
// 子类覆盖父类salary的方法
e.salary(10000);
System.out.println("--------------------------");
Employee e1 = new Accounting();
// 利用模板设置programmer个人基本信息
e1.id = 121314;
e1.name = "小红";
e1.sex = "女";
// 子类调用模板方法
e1.info();
System.out.println(e1.toString());
// 子类覆盖父类salary的方法
e1.salary(2000);
}
}
结果截图: