Java >> Tutoriel Java >  >> Tag >> class

Différences entre la classe abstraite et la classe concrète

1) Classe abstraite

  • Le "résumé" le mot clé est obligatoire pour déclarer une classe abstraite .
  • Nous ne pouvons pas créer un objet de la classe abstraite directement en utilisant nouveau mot clé alors, dans ce cas, nous pouvons définir toutes les méthodes abstraites avec le nouveau mot-clé.

Exemple de classe abstraite

// Declare an abstract class with abstract keyword
abstract class AbstractClass {
    // Declare an abstract method with no implementation
    abstract void printMethod();
}

public class ImplementedClass {
    public static void main(String[] args) {
        // Creating an object of abstract class using new keyword 
        // along with method implementation.
        AbstractClass ac = new AbstractClass() {
            void printMethod() {
                System.out.println("Hi, We are in Java World");
            }
        };

        // Calling an abstract class methods
        ac.printMethod();
    }
}

Sortie

D:\Programs>javac ImplementedClass.java

D:\Programs>java ImplementedClass 
Hi, We are in Java World

Remarque :

  • Un cours abstrait peut ou non contenir des méthodes abstraites .
  • Nous ne pouvons pas déclarer une méthode abstraite comme finale parce que nous devons implémenter toutes les méthodes si nous déclarons une classe comme final alors il n'est pas permis d'implémenter les méthodes.

2) Classe Béton

  • nous n'avons pas besoin de préfixer "abstract" dans la déclaration de classe concrète si nous incluons "abstract" mot-clé avant le nom de la classe, il deviendra également abstrait .
  • Dans le cas de la classe concrète , nous pouvons créer un objet de cette classe directement en utilisant le nouveau mot-clé.

Exemple de classe concrète

// Declare an abstract class with abstract keyword
abstract class AbstractClass {

    // Declare an abstract method with no implementation
    abstract void printMethod();
}

// Defining concrete class with extending abstract class
class ConcreteClass extends AbstractClass {


    // Implementing abstract method
    void printMethod() {
        System.out.println("Hi,We are in Java World");
    }
}

public class Main {
    public static void main(String[] args) {

        // Creating an object of concrete class using new keyword directly.
        ConcreteClass cc = new ConcreteClass();
        
        // Calling concrete class method.
        cc.printMethod();
    }
}

Sortie

D:\Programs>javac Main.java

D:\Programs>java Main
Hi,We are in Java World

Remarque :

  • Dans le cas d'une classe concrète , elle ne contiendra aucune méthode abstraite car si nous contenons une seule méthode abstraite alors la classe deviendra abstraite.
  • Dans le cas d'une classe concrète , nous pouvons déclarer cette classe comme finale car elle ne contient pas de méthode abstraite donc besoin de se soucier de la mise en œuvre.

Balise Java