Μπορεί μια αφηρημένη κλάση να έχει κατασκευαστή;

Μπορεί μια αφηρημένη κλάση να έχει κατασκευαστή;

Αν ναι, πώς μπορεί να χρησιμοποιηθεί και για ποιους σκοπούς;

Λύση

Ναι, μια αφηρημένη κλάση μπορεί να έχει έναν κατασκευαστή. Σκεφτείτε αυτό:

abstract class Product { 
    int multiplyBy;
    public Product( int multiplyBy ) {
        this.multiplyBy = multiplyBy;
    }

    public int mutiply(int val) {
       return multiplyBy * val;
    }
}

class TimesTwo extends Product {
    public TimesTwo() {
        super(2);
    }
}

class TimesWhat extends Product {
    public TimesWhat(int what) {
        super(what);
    }
}

Η υπερκλάση Προϊόν είναι αφηρημένη και έχει έναν κατασκευαστή. Η συγκεκριμένη κλάση TimesTwo έχει έναν κατασκευαστή που απλά κωδικοποιεί την τιμή 2. Η συγκεκριμένη κλάση TimesWhat έχει έναν κατασκευαστή που επιτρέπει στον καλούντα να καθορίσει την τιμή.

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

ΣΗΜΕΙΩΣΗ: Καθώς δεν υπάρχει προεπιλεγμένος (ή χωρίς όρισμα) κατασκευαστής στη γονική αφηρημένη κλάση, ο κατασκευαστής που χρησιμοποιείται στην υποκλάση πρέπει να καλέσει ρητά την κλάση τον κατασκευαστή της γονικής υποκατηγορίας.

Σχόλια (8)

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

Σχόλια (0)

Σκεφτείτε αυτό:

abstract class Product { 
    int value;
    public Product( int val ) {
        value= val;
    }
    abstract public int multiply();
}

class TimesTwo extends Product {
    public int mutiply() {
       return value * 2;
    }
}

Η υπερκλάση είναι αφηρημένη και έχει έναν κατασκευαστή.

Σχόλια (3)