当前位置: 首页 > 知识库问答 >
问题:

Java子类中的继承

俞博涛
2023-03-14

我试图写一个类(SalaryEmployee)和子类(ComissionEmployee),但我没有得到正确的工资,我不能做SE1.SetSalesMount(20000)。我哪里出了问题?

这是主要的:

public static void main(String[] args) {
    SalaryEmployee se1 = new CommissionEmployee("E3", "John", 10000);  
    se1.setSalesAmount(20000) // not found
    System.out.println(se1.getSalary());

}
public class SalaryEmployee  {
    private String id;
    private String name;
    double salary;

    public SalaryEmployee(String id, String name, double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }

    public double getSalary() {
        return salary;
    }

    public String toString() {
        return "ID=" + id + " Name=" + name + " Salary=" + salary;
    }
}
public class CommissionEmployee extends SalaryEmployee {

    private double baseSalary;
    private double salesAmount;

    public CommissionEmployee(String id, String name, double salary) {
        super(id, name, salary);
        this.baseSalary = salary;

    }

    public void setSalesAmount(double amount) {
        this.salesAmount = amount;
    }

    public double getSalesAmount() {
        return salesAmount;
    }

    public double getSalary() {
        if (salesAmount <= 10000 || salesAmount < 20000) {
            return 1.03 * baseSalary;
        } else if (salesAmount > 20000) {
            return 1.05 * baseSalary;
        } else if (salesAmount < 10000) {
            return baseSalary;
        }
        return baseSalary;
    }
}

共有1个答案

鲁俊友
2023-03-14

您将se1创建为SalaryEmployee类型,该类型没有setsalesamount()方法。因此,您需要将se1降至CommissionEmployee:

((CommissionEmployee)se1).setSalesAmount(20000)
 类似资料:
  • 我一直在做一个基本的类继承练习,尽管我认为我已经掌握了它的jist,但我的程序并没有按应有的方式工作。我遇到了编译错误,但还没有弄清楚原因——如果你们都能在这里帮助我,那就太好了。 首先,这里有三个文件1。人java——基类2。大学生java——一个派生的Person类。java 3。家庭java——不太确定,我认为它是自己的基类 人java有两个实例变量,String name和int age,

  • 我在Java实践继承,面临以下问题: 父类的代码: 子类代码: 两者是分开的。java文件。当我尝试执行父类文件时,它可以工作,但由于某些原因,我甚至无法运行子类。这里有以下信息: 该文件于2月8日发布。java不是可执行的。请选择要运行的主类 我该如何解决这个问题?

  • 我试图弄清楚Java中的继承和数组,并试图让这些类一起工作。我相信我已经继承下来了,但我仍在为数组部分而挣扎。 有三个文件: 1. Person.java-基类2. Student.java-派生的Person.java3. Family.java-不太确定,我认为这是它自己的基类 人java有两个实例变量,String name和int age,以及各种各样的构造函数toString、equal

  • 我有一个父类和子类、和,它们描述了如何购买水果的不同类型。 在篮子里插入购买的特定水果; 计算购买水果的总价值; 计算用于给定类型水果(水果名称)的总金额 为了与其他项目的类兼容,在各个类中使用的执行要支付金额的计算的方法将具有名称payFruit,返回类型double并且没有参数。此方法必须在接口中声明。 注意:我知道这可能对我的情况很特殊,对其他人没有太大帮助,但我发现这个类层次结构在使用时有

  • 问题内容: 这是一个面试问题。 子类是否继承私有字段? 我回答“否”,因为我们无法使用“常规OOP方式”访问它们。但是访问者认为它们是继承的,因为我们可以间接或使用反射来访问这些字段,并且它们仍然存在于对象中。 回来后,我在javadoc中找到了以下引号: 超类私人成员 子类不继承其父类的私有成员。 你知道面试官的观点有什么论据吗? 问题答案: 这里的问题/答案中的大多数困惑都围绕着继承的定义。