如何重写 Java 类中的 earning 方法?
时间: 2024-11-30 16:13:58 浏览: 10
在Java中,如果你想要重写一个名为`earning`的方法,假设它是一个父类或接口里的公共方法,你可以按照以下步骤操作:
1. **继承**:首先,你需要创建一个继承自有该方法的父类的子类。如果方法在接口里,你必须实现这个接口。
```java
public class ChildClass extends ParentClass {
// 或者 public class ChildClass implements InterfaceName {
}
```
2. **定义新方法**:在子类中,定义一个新的`earning`方法,可以有不同的实现,通常会提供对原有方法的不同处理逻辑:
```java
@Override
public void earning() {
// 你的新实现逻辑
System.out.println("子类特有的 earnings 方法");
}
```
这里我们使用了`@Override`注解来明确表示这是对父类方法的重写。
3. **调用**:当你实例化子类并调用`earning`方法时,会执行子类的版本,而不是父类的原始版本。
```java
ChildClass child = new ChildClass();
child.earning(); // 输出 "子类特有的 earnings 方法"
```
相关问题
重写earning ()方法,计算salaries
在编程中,特别是涉及到对象导向设计的时候,"重写"通常是指在继承的上下文中,子类覆盖(或实现)了父类的一个方法,以便提供特定于子类的行为。在这个场景下,如果你想让你的类能够计算薪水(salaries),假设有一个名为`Employee`的父类有`earning()`方法用于计算基本收入,你可以创建一个新的子类如`SalesEmployee`或`Manager`,并重写这个方法。
例如,在Java中:
```java
// 父类 Employee
public class Employee {
private double baseSalary;
public double earning() {
return baseSalary;
}
}
// 子类 SalesEmployee 或 Manager
public class SalesEmployee extends Employee {
// 可能包含额外的奖金计算逻辑
@Override
public double earning() {
return baseSalary + salesBonus; // 假设salesBonus是一个变量表示销售提成
}
// 同理,Manager类可能会考虑工资加奖金、股票等其他因素
}
public class Manager extends Employee {
private double bonus;
@Override
public double earning() {
return baseSalary + bonus + performanceBonus; // 假设performanceBonus是基于绩效的额外奖金
}
}
```
在这个例子中,当你实例化一个`SalesEmployee`或`Manager`对象,并调用`earning()`方法时,会分别返回包括基础工资和其他奖励的总金额。
设计一个abstract类,类名为Employee。该类有成员变量name,有构造方法,有一个抽象方法,格式如下: public abstract double earning(); (2)定义Employee的子类YearWorker和MonthWorker。YearWorker对象按年领薪水,MonthWorker对象按月领薪水。子类重写earning方法,给出各自领取报酬的具体值(自编,YearWorker类中返回年薪,Monthworker类中返回月薪) (3)有一个Company类,该类使用
Employee类的对象作为成员变量,有一个方法用于计算公司支付给所有员工的总工资。该方法的格式如下:
public double totalSalary(Employee[] employees) {
double total = 0.0;
for (Employee employee : employees) {
total += employee.earning();
}
return total;
}
下面是实现以上需求的代码:
abstract class Employee {
protected String name;
public Employee(String name) {
this.name = name;
}
public abstract double earning();
}
class YearWorker extends Employee {
public YearWorker(String name) {
super(name);
}
@Override
public double earning() {
return 120000.0; // 假设年薪为12万
}
}
class MonthWorker extends Employee {
public MonthWorker(String name) {
super(name);
}
@Override
public double earning() {
return 10000.0; // 假设月薪为1万
}
}
class Company {
public double totalSalary(Employee[] employees) {
double total = 0.0;
for (Employee employee : employees) {
total += employee.earning();
}
return total;
}
}
// 测试代码
public static void main(String[] args) {
Employee[] employees = new Employee[4];
employees[0] = new YearWorker("张三");
employees[1] = new YearWorker("李四");
employees[2] = new MonthWorker("王五");
employees[3] = new MonthWorker("赵六");
Company company = new Company();
System.out.println("公司总工资:" + company.totalSalary(employees));
}
阅读全文