【求租】关于继承方面的问题
上代码:
package abstructTest;
public class PersonTest {
public static void main(String[] args) {
var person=new Person[2];
Person p=new Student("c", "math");
person[0]=new Student("mac", "computer");
person[1]=new Employee("mce", 5000, 1996, 6, 12);
for (Person x : person) {
System.out.println(x.getName()+","+x.getDescription());
}
System.out.println(p.getDescription());
System.out.println(p.getName());
}
}
——————————————————————————
package abstructTest;
public abstract class Person {
public abstract String getDescription();
private String name;
public Person(String name) {
this.name=name;
}
public String getName() {
return name;
}
}
——————————————————————————
package abstructTest;
public class Student extends Person {
private String major;
public Student(String name,String major) {
super(name);
this.major=major;
}
public String getDescription() {
return "a student majoring in"+major;
}
}
——————————————————————————
package abstructTest;
import java.time.*;
public class Employee extends Person {
private double salary;
private LocalDate hireday;
public Employee(String name,double salary,int year,int month,int day) {
super(name);
this.salary=salary;
hireday=LocalDate.of(year, month, day);
}
public String getDescription() {
return String.format("an employee with a salary of $%.2f" , salary);
}
public void rasieSalay(double bypercent) {
double raise=salary*bypercent/100;
salary+=raise;
}
public double getSalary() {
return salary;
}
public LocalDate getHireday() {
return hireday;
}
}
——————————————————————————
问题就是这两个标红的代码,这是java核心技术里面的一则代码,其中super关键字是引用父类的构造方法来构造这个name,我想问的就是那这个name参数是直接传递给父类的private的name变量了吗。因为有说抽象类是没有办法构造对象,并且创建数组的时候就是用的子类的对象放在了父类的对象变量里面,那引用getName方法就是引用子类里面继承的方法呀,既然子类中没有继承父类的private类型的变量name,那为啥还能做到输出name呢?求大神解释一下,这里直接就看混乱了