Interfejsy

Interfejs – zestaw wymagań, które muszą być spełnione, aby klasa została uznana za zgodną z danym interfejsem
Domyślnie w interfejsie metody mają modyfikator dostępu publiczny.
Z interfejsów nie można tworzyć obiektów. W implementacji interfejsu nazwa public jest wymagana, bo inaczej byłby zastosowany domyślny dostęp pakietowy.

Przykładowy kod źródłowy zastosowania działania interfejsów – sortowanie pracowników z użyciem generycznego interfejsu Comparable:

package net.javainfo.sortInterface.domain;

public class Employee implements Comparable<Employee> {

    private String name;
    private double salary;

    public Employee(String name, Double salary) {
        this.name = name;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public Double getSalary() {
        return salary;
    }

    public int compareTo(Employee other) {
        if (this instanceof Manager && !(other instanceof Manager)) {
            return -1;
        } else if (!(this instanceof Manager) && other instanceof Manager) {
            return 1;
        }
        return Double.compare(salary, other.salary);
    }
}

package net.javainfo.sortInterface.domain;


public class Manager extends Employee {


    public Manager(String name, Double salary) {
        super(name, salary);
    }

    public String getName() {
        return super.getName();
    }

    public Double getSalary() {
        return super.getSalary();
    }


}

package net.javainfo.sortInterface.main;

import net.javainfo.sortInterface.domain.Employee;
import net.javainfo.sortInterface.domain.Manager;

import java.util.Arrays;

//testowanie sortowania pracowników i kierowników względem ich pensji od najmniejszej do największej
//największy priorytet mają kierownicy, więc ich przy sortowaniu uwzględnia najpierw
public class EmployeeSortTest {

    public static void main(String[] args) {

        var staff = new Employee[4];


        staff[0] = new Employee("Henryk Kwiatek", 35000.0);
        staff[1] = new Manager("Karol Kowalski", 75000.0);
        staff[2] = new Employee("Tadeusz Nowak", 38000.0);
        staff[3] = new Manager("Maja Kowalska", 60000.0);

        //najpierw sortuje kierowników, a potem dopiero zwykłych pracownikóœ
        Arrays.sort(staff);

        for (Employee e : staff) {
            System.out.println("name= " + e.getName() + " salary= " + e.getSalary());
        }


    }
}

Link do repo:
https://github.com/javainfo-net/interfaces

A tutaj wynik działania programu:


Opublikowano

w

przez

Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *