Java 17: Interfaces
Java 8 ile birlikte interfacelerde default ve statik metotlar tanımlanabilir. Daha önce interfaceleri implemente eden sınıfları değiştirmeden interface’e yeni bir metot eklemek mümkün değildi, artık interfacelerde metotlar implemente edilebilir hale geldi.
Statik Metot:
1
2
3
4
public interface Car {
static String CarName() {
return "Mercedes";
}}
Statik metot interface’e aittir ve interface’i implemente eden sınıflar tarafından override edilemez. Dışarıdan erişmek için Car.CarName() şeklinde kullanılması gerekir.
Default Metot:
1
2
3
default String accelerate() {
return “Car accelerated”;
}
Default metotlar interface’i implemente eden sınıflar tarafından erişilebilir ve override edilebilir.
Java 9 ile birlikte interfacelerde private metot yazılabilir hale gelmiştir. Redundant koddan kaçınmak için Oracle böyle bir geliştirme yapmıştır. Abstract olmayan metotlar arasında ortak kodların paylaşılmasına olanak sağlamıştır. Java 9’dan önce interfacede private metot tanımlamak compile time hatasına sebep olmaktadır.
Private Metot:
1
2
3
4
5
public interface Car {
private String instancePrivate() {
return "instance private";
}
}
Referanslar