Java 多态性(动态调度招标)

Java 多态性(动态调度招标),java,Java,如果我们删除了构造函数中的注释,那么就可以了。为什么?Salary s=新的薪水(“Mohd Mohtashim”,“Ambehta,UP”,3200.00)您正在调用一个包含多个参数的构造函数,但它不存在,因为您已经注释掉了它。您所说的“那么一切都会好起来的。为什么?”?你面临错误吗?你怎么想?试一试什么错误?为什么你认为不应该有错误?这根本不是多态性的问题。这是关于继承和方法重载的。使用重载方法也没有问题。 /* To change this license header, choose

如果我们删除了构造函数中的注释,那么就可以了。为什么?

Salary s=新的薪水(“Mohd Mohtashim”,“Ambehta,UP”,3200.00)您正在调用一个包含多个参数的构造函数,但它不存在,因为您已经注释掉了它。

您所说的“那么一切都会好起来的。为什么?”?你面临错误吗?你怎么想?试一试什么错误?为什么你认为不应该有错误?这根本不是多态性的问题。这是关于继承和方法重载的。使用重载方法也没有问题。
 /* To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication3;

class Employee {

    private String name;
    private String address;
    private int number;

    public Employee(Employee emp) {
        System.out.println("Constructing an Employee");
        this.name = emp.name;
        this.address = emp.address;
        this.number = emp.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 void mailCheck() {
        System.out.println("Mailing a check to " + this.name
                + " " + this.address);
    }

    public String toString() {
        return name + " " + address + " " + number;
    }

    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String newAddress) {
        address = newAddress;
    }

    public int getNumber() {
        return number;
    }
}

class Salary extends Employee {

    private double salary; //Annual salary

    public Salary(Salary obj) {
        super(obj);
        setSalary(obj.salary);
    }

    /*public Salary(String name, String address, int number, double Salary) {
        super(name, address, number);
        setSalary(Salary);
    }*/

    public void mailCheck() {
        System.out.println("Within mailCheck of Salary class ");
        System.out.println("Mailing check to " + getName()
                + " with salary " + salary);
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double newSalary) {
        if (newSalary >= 0.0) {
            salary = newSalary;
        }
    }

    public double computePay() {
        System.out.println("Computing salary pay for " + getName());
        return salary / 52;
    }
}

public class JavaApplication3 {

    public static void main(String[] args) {

        Salary s = new Salary("Mohd Mohtashim", "Ambehta,UP", 3, 2000.00); // error why
        System.out.println("Call mailCheck using Salary reference --");
        s.mailCheck();

    }
}