2011-01-20 2 views
0

私はどこかの行を読みましたが、この行の意味をはっきりと理解できません。なぜ私は理解できないのか分かりません。私はこの2つの違いをよく知っています..しかしplzは私を助け、それが何を意味するのかを説明します...?interface/abstract class

は設計では、基本クラスがその 派生クラスのインタフェースのみを提示したいです。つまり、 は、基本クラスの オブジェクトを実際にインスタンス化する必要はありません。 はそれにアップキャストしたいだけです(暗黙的な アップキャスト、多型 の動作を提供します)。そのインターフェイスは となります。これは、 抽象的なキーワード を使用してそのクラス抽象化を行うことによって達成される。誰かが 抽象クラスのオブジェクトを作成しようとすると、 コンパイラはそれを防ぎます。事前に

おかげで....

+0

この文章の出所はどこですか? – aponomarenko

+0

正確には何が分かりませんか? –

答えて

3
public abstract class Animal { 
    public abstract String speak(); 
} 
public class Dog extends Animal { 
    public String speak() { return "woof!"; } 
} 
public class Duck extends Animal { 
    public String speak() { return "quack!"; } 
} 

Animal a = Zoo.getRandomAnimal(); 
a.speak(); 

犬やアヒルではなく、動物として動物を参照するようにします。そうすれば、あなたが犬/アヒルのハイブリッドを繁殖させ、新しいタイプの動物が作られるならば、この新しい不思議に対処するためにコードを変更する必要はありません。

あなたが引用しているインターフェースは、Javaの「インターフェース」ではなく、「このオブジェクトと対話するために使用できるメソッドの集まり」です。

すべての動物が話します、そしてそれは何が重要です。それはインターフェイスです。彼らの発言は実装の詳細です。

+0

@ptomli ..ありがとう......... – water

0

インタフェースは、抽象クラスは具象メソッドおよび抽象メソッドを持ちながら、具体的な方法を持っていない純粋な抽象クラスも

0

それはあなたが定義した場合ことを意味していますAクラスのインスタンスを抽象クラスとして作成することはできません.Aクラスのインスタンス(Aから拡張/継承するクラス)のみを作成できます。