Bu iyi. Yukarıdakileri anlamak için önce soyut sınıfların doğasını anlamalısınız. Bu bakımdan arayüzlere benzerler. Oracle'ın burada söylediği şey bu .
Soyut sınıflar arayüzlere benzer. Bunları örnekleyemezsiniz ve bunlar, bir uygulama ile veya olmadan bildirilen bir yöntem karışımını içerebilir.
Bu nedenle, bir arayüz başka bir arayüzü genişlettiğinde ne olacağını düşünmelisiniz. Örneğin ...
//Filename: Sports.java
public interface Sports
{
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}
//Filename: Football.java
public interface Football extends Sports
{
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}
... gördüğünüz gibi, bu da mükemmel bir şekilde derleniyor. Bunun nedeni, tıpkı soyut bir sınıf gibi, bir arayüzün somutlaştırılamamasıdır. Bu nedenle, yöntemlerden açıkça "ebeveyninden" bahsetmek gerekli değildir. Ancak, TÜM ana yöntem imzaları örtük olarak genişletme arabiriminin veya soyut sınıfın uygulanmasının bir parçası haline gelir. Dolayısıyla, uygun bir sınıf (somutlaştırılabilen) yukarıdakileri genişlettiğinde, her bir soyut yöntemin uygulanmasını sağlamak GEREKECEKTİR.
Umarım bu yardımcı olur ... ve Allahu 'alam!