2012-03-04 5 views
-5

Подкласс класса Fruit использует метод отслаивания интерфейса класса без его реализации, а также это не абстрактный класс, скрывающий метод?Интерфейс: класс без ключевого слова реализации Ключевые слова

interface Peelable { 
    int peel(); 
} 

class Fruit { 
    // Return int number of pieces of peel that 
    // resulted from the peeling activity. 
    public int peel() { 
     System.out.println("Peeling is appealing."); 
     return 1; 
    } 
} 

class Apple implements Peelable { 
    private Fruit fruit = new Fruit(); 
    public int peel() { 
     return fruit.peel(); 
    } 
} 

class FoodProcessor { 
    static void peelAnItem(Peelable item) { 
     item.peel(); 
    } 
} 

class Example5 { 
    public static void main(String[] args) { 
     Apple apple = new Apple(); 
     FoodProcessor.peelAnItem(apple); 
    } 
} 
+1

Кроме того, я не понимаю вопроса. «Фрукты» - это конкретный класс, который не «расширяет» или «реализует» что-либо. Так в чем проблема? –

+2

«Fruit использует метод отслаивания интерфейса класса» - нет, он реализует несвязанный метод, который просто имеет одно и то же имя! «Фрукты» не реализуют «Пилинг» в вашем коде. – DNA

+0

Кроме того, почему «Apple» имеет «Фрукты» как поле? Не имеет смысла ... – DNA

ответ

1

Fruit не имеет никакого отношения (*) к Peelable или Apple, так как [Fruit] не реализует Peelable.

Они только два класса [Apple, Fruit] или класс и интерфейс [Fruit, Peelable, которые происходят, чтобы иметь метод с тем же именем.

(*) Нет, это более точно. Очевидно, что Apple имеет поле Fruit.

Смежные вопросы