java===java基礎學習(11)---繼承
阿新 • • 發佈:2018-04-08
gets post staf extends manage 方法 xtend 新的 部分
下面是由繼承Employee 類來定義Manager 類的格式, 關鍵字extends 表示繼承。
public class Manager extends Employee
{
添加方法和域
}
子類中繼承父類的域和方法;
覆蓋方法
父類的方法,並不適用於子類的時候,需要提供一個新的方法來覆蓋父類中的這個方法
public double getSalary()
{
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
子類構造器
public Manger(String name, double salary, int year, int month, int day)
{
super(name, salary, year, month, day);
bonus = 0;
}
因為子類終的構造器不能直接訪問父類的私有域,所以必須利用父類的構造器對這部分私有域進行初始化,可以使用super實現對父類構造器的調用。使用super調用構造器的語句必須是子類構造器的第一條語句。
package testbotoo; import java.time.LocalDate; public class Employee { private String name; private double salary; private LocalDate hireDay;public Employee(String name, double salary, int year, int month, int day) { this.name = name; this.salary = salary; hireDay = LocalDate.of(year, month, day); } public String getName() { return name; } public double getSalary() {return salary; } }
package testbotoo; public class Manager extends Employee { private double bonus; /** * @param name the employee‘s name * @param salary the salary * @param year the hire year * @param month the dire onth * @param day the hire day */ public Manager(String name, double salary, int year, int month, int day) { super(name, salary, year, month, day); bonus = 0; } public double getSalary() { double baseSalary = super.getSalary(); return baseSalary +bonus; } public void setBonus(double b) { bonus = b; } }
package testbotoo; public class ManagerTest { public static void main(String[] args) { Manager boss = new Manager("aaa",8000,1999,12,20); boss.setBonus(5000); Employee[] staff = new Employee[3]; staff[0] = boss; staff[1] = new Employee("hary",5000,1989,3,15); staff[2] = new Employee("mayun",50000,1989,3,16); for (Employee e : staff) System.out.println("name="+e.getName()+",salary="+e.getSalary()); } }
java===java基礎學習(11)---繼承