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:
Dodaj komentarz