Java Abstract Class and Method (Με παράδειγμα)

Σε αυτό το σεμινάριο, θα μάθουμε για τις αφηρημένες τάξεις και μεθόδους Java με τη βοήθεια παραδειγμάτων. Θα μάθουμε επίσης για την αφαίρεση στην Java.

Java Abstract Class

Η αφηρημένη κλάση στην Java δεν μπορεί να τεκμηριωθεί (δεν μπορούμε να δημιουργήσουμε αντικείμενα αφηρημένων κλάσεων). Χρησιμοποιούμε τη abstractλέξη-κλειδί για να δηλώσουμε μια αφηρημένη τάξη. Για παράδειγμα,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

Μια αφηρημένη τάξη μπορεί να έχει τόσο τις κανονικές όσο και τις αφηρημένες μεθόδους. Για παράδειγμα,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

Για να μάθετε για τις μη αφηρημένες μεθόδους, επισκεφθείτε τις μεθόδους Java. Εδώ, θα μάθουμε για αφηρημένες μεθόδους.

Αφηρημένη μέθοδος Java

Μια μέθοδος που δεν έχει το σώμα της είναι γνωστή ως αφηρημένη μέθοδος. Χρησιμοποιούμε την ίδια abstractλέξη-κλειδί για τη δημιουργία αφηρημένων μεθόδων. Για παράδειγμα,

 abstract void display();

Εδώ, display()είναι μια αφηρημένη μέθοδος. Το σώμα του display()αντικαθίσταται από το ;.

Εάν μια τάξη περιέχει μια αφηρημένη μέθοδο, τότε η τάξη θα πρέπει να δηλώνεται αφηρημένη. Διαφορετικά, θα δημιουργήσει σφάλμα. Για παράδειγμα,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Παράδειγμα: Java Abstract Class and Method

Αν και οι αφηρημένες τάξεις δεν μπορούν να τεκμηριωθούν, μπορούμε να δημιουργήσουμε υποκατηγορίες από αυτήν. Στη συνέχεια μπορούμε να προσπελάσουμε μέλη της αφηρημένης κλάσης χρησιμοποιώντας το αντικείμενο της υποκατηγορίας. Για παράδειγμα,

 abstract class Language ( // method of abstract class public void display() ( System.out.println("This is Java Programming"); ) ) class Main extends Language ( public static void main(String() args) ( // create an object of Main Main obj = new Main(); // access method of abstract class // using object of Main class obj.display(); ) )

Παραγωγή

 Αυτός είναι προγραμματισμός Java

Στο παραπάνω παράδειγμα, δημιουργήσαμε μια αφηρημένη τάξη με την ονομασία Language. Η τάξη περιέχει μια κανονική μέθοδο display().

Δημιουργήσαμε την Κύρια τάξη που κληρονομεί την αφηρημένη τάξη. Παρατηρήστε τη δήλωση,

 obj.display();

Εδώ, το obj είναι το αντικείμενο της παιδικής τάξης Main. Καλούμε τη μέθοδο της αφηρημένης κλάσης χρησιμοποιώντας το αντικείμενο obj.

Εφαρμογή αφηρημένων μεθόδων

Εάν η αφηρημένη τάξη περιλαμβάνει οποιαδήποτε αφηρημένη μέθοδο, τότε όλες οι θυγατρικές τάξεις που κληρονομούνται από την αφηρημένη superclass πρέπει να παρέχουν την εφαρμογή της αφηρημένης μεθόδου. Για παράδειγμα,

 abstract class Animal ( abstract void makeSound(); public void eat() ( System.out.println("I can eat."); ) ) class Dog extends Animal ( // provide implementation of abstract method public void makeSound() ( System.out.println("Bark bark"); ) ) class Main ( public static void main(String() args) ( // create an object of Dog class Dog d1 = new Dog(); d1.makeSound(); d1.eat(); ) )

Παραγωγή

 Φλοιός φλοιού μπορώ να φάω.

Στο παραπάνω παράδειγμα, δημιουργήσαμε μια αφηρημένη τάξη Animal. Η τάξη περιέχει μια αφηρημένη μέθοδο makeSound()και μια μη αφηρημένη μέθοδο eat().

Έχουμε κληρονομήσει ένα σκυλί υποκατηγορίας από το superclass Animal. Εδώ, η υποκατηγορία Dog παρέχει την εφαρμογή για την αφηρημένη μέθοδο makeSound().

Στη συνέχεια χρησιμοποιήσαμε το αντικείμενο d1 της κλάσης Dog για να καλέσουμε μεθόδους makeSound()και eat().

Σημείωση : Εάν η κλάση Dog δεν παρέχει την εφαρμογή της μεθόδου abstract makeSound(), το Dog θα πρέπει επίσης να δηλωθεί ως abstract. Αυτό συμβαίνει επειδή ο σκύλος υποκατηγορίας κληρονομεί makeSound()από το Animal.

Πρόσβαση στον Κατασκευαστή των αφηρημένων τάξεων

Μια αφηρημένη τάξη μπορεί να έχει κατασκευαστές όπως η κανονική τάξη. Και, μπορούμε να έχουμε πρόσβαση στον κατασκευαστή μιας αφηρημένης κλάσης από την υποκατηγορία χρησιμοποιώντας τη superλέξη-κλειδί. Για παράδειγμα,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Εδώ, χρησιμοποιήσαμε τον super()εσωτερικό κατασκευαστή του σκύλου για πρόσβαση στον κατασκευαστή του ζώου.

Σημειώστε ότι superπρέπει να είναι πάντα η πρώτη δήλωση του κατασκευαστή υποκατηγοριών. Επισκεφτείτε τη σούπερ λέξη-κλειδί Java για να μάθετε περισσότερα.

Αφαίρεση Java

Η κύρια χρήση αφηρημένων τάξεων και μεθόδων είναι η επίτευξη αφαίρεσης στην Java.

Η αφαίρεση είναι μια σημαντική έννοια του αντικειμενοστρεφούς προγραμματισμού που μας επιτρέπει να αποκρύπτουμε περιττές λεπτομέρειες και να δείχνουμε μόνο τις απαραίτητες πληροφορίες.

Αυτό μας επιτρέπει να διαχειριστούμε την πολυπλοκότητα παραλείποντας ή κρύβοντας λεπτομέρειες με μια απλούστερη, υψηλότερου επιπέδου ιδέα.

Ένα πρακτικό παράδειγμα αφαίρεσης μπορεί να είναι τα φρένα μοτοσικλέτας. Ξέρουμε τι κάνει το φρένο. Όταν πατάμε το φρένο, η μοτοσυκλέτα θα σταματήσει. Ωστόσο, η λειτουργία του φρένου διατηρείται κρυμμένη από εμάς.

Το κύριο πλεονέκτημα της απόκρυψης της λειτουργίας του φρένου είναι ότι τώρα ο κατασκευαστής μπορεί να εφαρμόσει φρένο διαφορετικά για διαφορετικές μοτοσικλέτες, ωστόσο, αυτό που κάνει το φρένο θα είναι το ίδιο.

Ας πάρουμε ένα παράδειγμα που μας βοηθά να κατανοήσουμε καλύτερα την αφαίρεση Java.

Παράδειγμα 3: Αφαίρεση Java

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Έξοδος :

 Φλοιός φλοιού Meows

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα superclass Animal. Το superclass Animal έχει μια αφηρημένη μέθοδο makeSound().

Η makeSound()μέθοδος δεν μπορεί να εφαρμοστεί στο Animal. Είναι επειδή κάθε ζώο κάνει διαφορετικούς ήχους. Έτσι, όλες οι υποκατηγορίες του Animal θα είχαν διαφορετική εφαρμογή makeSound().

Έτσι, η εφαρμογή makeSound()στο Animal παραμένει κρυμμένη.

Εδώ, το Dog κάνει τη δική του εφαρμογή makeSound()και το Cat κάνει τη δική του εφαρμογή makeSound().

Σημείωση : Μπορούμε επίσης να χρησιμοποιήσουμε διεπαφές για να επιτύχουμε αφαίρεση στην Java. Για να μάθετε περισσότερα, επισκεφθείτε το Java Interface.

Βασικά σημεία που πρέπει να θυμάστε

  • Χρησιμοποιούμε τη abstractλέξη-κλειδί για τη δημιουργία αφηρημένων τάξεων και μεθόδων.
  • Μια αφηρημένη μέθοδος δεν έχει καμία εφαρμογή (σώμα μεθόδου).
  • Μια τάξη που περιέχει αφηρημένες μεθόδους θα πρέπει επίσης να είναι αφηρημένη.
  • Δεν μπορούμε να δημιουργήσουμε αντικείμενα μιας αφηρημένης τάξης.
  • Για να εφαρμόσουμε χαρακτηριστικά μιας αφηρημένης κλάσης, κληρονομούμε υποκατηγορίες από αυτήν και δημιουργούμε αντικείμενα της υποκατηγορίας.
  • Μια υποκατηγορία πρέπει να παρακάμψει όλες τις αφηρημένες μεθόδους μιας αφηρημένης τάξης. Ωστόσο, εάν η υποκατηγορία δηλωθεί αφηρημένη, δεν είναι υποχρεωτική η παράκαμψη αφηρημένων μεθόδων.
  • Μπορούμε να έχουμε πρόσβαση στα στατικά χαρακτηριστικά και τις μεθόδους μιας αφηρημένης τάξης χρησιμοποιώντας την αναφορά της αφηρημένης τάξης. Για παράδειγμα,
     Animal.staticMethod();

ενδιαφέροντα άρθρα...