Java >> Java tutorial >  >> Tag >> protected

Brug af beskyttede felter i abstrakt klasse i Java

Selvom du helt sikkert kan gøre begge veje protected field way er mindre ønskværdigt, og jeg vil påstå mindre idiomatisk, især hvis dette er bibliotekskode, som du planlægger at dele.

Du kan se dette i Java Collections API såvel som Guava. Du vil blive presset hårdt for at finde Abstract klasser, der har protected felter (endsige eventuelle felter).

Når det er sagt, er der altid undtagelser, og du skriver ikke altid bibliotekskode (dvs. offentlig api).

Her er min mening om protected og/eller private felter og abstrakte klasser. Hvis du skal gøre det, skal du lave en konstruktør, der tager startværdierne:

public abstract class Animal {
    private int height;
    public Animal(int height) { this.height = height; }
    public int getHeight() { return this.height }
}

public class Cat extends Animal {
    public Cat() {
        super(2);
    }
}

Nu skal dine underklasser indstille højden til noget, da de skal kalde konstruktøren, der tager højden.


Java tag