1. 程式人生 > >java===java基礎學習(11)---繼承

java===java基礎學習(11)---繼承

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)---繼承