【发布时间】:2013-12-30 22:03:46
【问题描述】:
我在找简单的抽象例子如下,
public abstract class Employee {
private String name;
private String address;
private int number;
public Employee(String name, String address, int number) {
System.out.println("Constructing an Employee");
this.name = name;
this.address = address;
this.number = number;
}
}
public class Salary extends Employee {
private double salary; //Annual salary
public Salary(String name, String address, int number, double salary) {
super(name, address, number);
setSalary(salary);
}
}
public class AbstractDemo {
public static void main(String[] args) {
Salary s = new Salary("Mohd Mohtashim", "Ambehta, UP", 3, 3600.00);
Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);
}
}
这里我有一个抽象的基类和具体的子类。 抽象类在构造函数中有 3 个参数,子类有四个,但是当我在 main 方法中初始化抽象类和具体类时,两个构造函数都传递了 4 个参数并使用setSalary() 方法我能够计算 s 和 e 的薪水,即使 Employee 抽象类只需要 3 个参数。
这是怎么回事?有人可以帮我吗?
【问题讨论】:
-
我又看了一遍你的问题,发现你的问题不清楚。
-
我在询问下面答案中提到的构造函数初始化
标签: java class oop inheritance abstract-class