Comprendre l'objectif des classes abstraites en Java

Supposons que j'ai deux Classes, A et B. La classe A est défini comme abstraite, alors que B s'étend cette classe abstraite, et enfin j'ai tester le résultat et les deux classes font partie du même package.

public abstract class A {

    protected abstract void method1(); 

    protected void method2() { 
        System.out.println("This is Class A's method"); 
    } 
}

public class B extends A {

    @Override
    protected void method1() {
        System.out.println("This is B's implementaiton of A's method");
    } 
}  

et maintenant, quand je les tester:

B b = new B();
b.method1();
b.method2();  

Je vous prévu de sortie:

This is B's implementaiton of A's method
This is Class A's method

QUESTIONS:

  • Quel est le but de @Override mot-clé, parce que si je l'omettre, c'
    marche de la même façon.
  • Si je ne pas mettre en œuvre la méthode abstraite, j'obtiens une erreur de compilation. Quelle est donc la différence de la mise en œuvre d'une interface?
  • Aussi, je peux mettre en œuvre method2() en B ainsi. Alors que la sortie passe à ce qui est utilisation de B. N'est-ce pas aussi la substitution de la méthode de la classe mère? Alors quel est le but de définir explicitement une méthode comme résumé dans la Classe d'Un?

source d'informationauteur 911TurboS | 2012-02-08