2012-03-04 9 views
-5

以下のクラスFruitは、クラスインタフェースのメソッドpeelを実装せずに使用します。また、抽象クラスでもありません。インタフェース:implementaionキーワードを持たないクラス

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'はあなたのコードに' Peelable'を実装していません。 – DNA

+0

また、「Apple」はなぜフィールドとして「Fruit」を持っていますか?本当に意味をなさない... – DNA

答えて

1
Fruit

それは[Fruit] Peelableを実装していないので、Peelable又はAppleとは関係(*)を有していません。

これらは同じ名前のメソッドを持つように起こるちょうど2つのクラス[AppleFruit]またはクラスおよびインタフェース[FruitPeelableあります。

(*)いいえ - より正確な関係です。明らかに、AppleはフィールドとしてFruitを持っています。

関連する問題