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();
}
}