ublic abstract class Employee {
private double salary; private String name; public Employee(String n, double s) {
name = n;
salary = s;
} public abstract double getSalary(); public String getName() {
return name;
}}
public class Manager extends Employee {
private double salary; private String name; private int bonus; public Manager(String n, double s, int b) {
super(n, s);
bonus = b;
} public double getSalary() {
return salary;
} public String getName() {
return name;
} public int getBonus() {
return bonus;
} public static void main(String[] args) {
Manager zdx = new Manager("zhangdingxin", 8000,4000);
System.out.println("姓名:" + zdx.getName() + "  " + "工资 "
+ zdx.getSalary()+"  "+"奖金:"+zdx.getBonus()); }
}
super(n,s)结果运行不出来,请问怎么回事呢?因为我是自学的所以很难入门,还请你们帮帮我>
thank u!

解决方案 »

  1.   

    private double salary;
    private String name;成员变量是不动态绑定的,你不觉得你的父类和子类都拥有同样的成员而觉得奇怪嘛?去掉子类的那个声明了。然后
    public double getSalary() {
    public String getName() {
    像这样的方法是不是应该放到父类中去?
      

  2.   

    修改和优化了代码测试成功!!!
    public abstract class Employee {
    protected double salary; protected String name; public Employee(String n, double s) {
    name = n;
    salary = s;
    } public abstract double getSalary(); public String getName() {
    return name;
    }}public class Manager extends Employee {
    protected int bonus; public Manager(String nn, double ss, int b) {
    super(nn, ss);
    bonus = b;
    }
    public double getSalary()
    {
    return salary;
    }
    public int getBonus() {
    return bonus;
    } public static void main(String[] args) {
    Manager zdx = new Manager("zhangdingxin", 8000,4000);
    System.out.println("姓名:" + zdx.getName() + "  " + "工资 "
    + zdx.getSalary()+"  "+"奖金:"+zdx.getBonus()); }
    }