getter, setter in abstrakter Klasse oder lieber Unterklassen

steffi12

Mitglied
Hallo zusammen,
angenommen ich habe eine abstrakte Klasse, die mehrere Unterklassen haben soll:
Java:
public abstract class Customer {

    protected String name, adress;
    protected boolean paid;
   
    public Customer(String name, String adress, boolean paid) {
        this.name = name;
        this.adress = adress;
        this.paid = paid;
    }

Meine Frage ist nun; sollte man die Getter-Methoden innerhalb dieser abstrakten Klasse definieren oder in den Unterklassen? Welche ist die "bessere" / "professionellere" Variante?

Also so:
Java:
public abstract class Customer {

   protected String name, adress;
   protected boolean paid;
   
   public Customer(String name, String adress, boolean paid) {
       this.name = name;
       this.adress = adress;
       this.paid = paid;
   }
   
   public void setPaid(boolean paid) {
       this.paid = paid;
   }
   
   public boolean hasPaid() {
       return this.paid;
   }
   
   public String getName() {
       return this.name;
   }
   
   public String getAdress() {
       return this.adress;
   }
}

oder so:
Java:
public abstract class Customer {

    protected String name, adress;
    protected boolean paid;
   
    public Customer(String name, String adress, boolean paid) {
        this.name = name;
        this.adress = adress;
        this.paid = paid;
    }

Java:
public class SubClass extends Customer{

    public SubClass(String name, String adress, boolean paid) {
        super(name, adress, paid);
    }
   
    public void setPaid(boolean paid) {
        this.paid = paid;
    }
   
    public boolean hasPaid() {
        return this.paid;
    }
   
    public String getName() {
        return this.name;
    }
   
    public String getAdress() {
        return this.adress;
    }

}

Übrigens die Klasse wird nicht SubClass heissen 🙂
 
Du solltest die getter/setter auf jeden Fall in der abstrakten Oberklasse definieren.

1. hättest du sonst in jeder Unterklasse die gleichen Methoden und somit ziemlich viel doppelten Code
und
2. würde sowas nicht klappen:
Java:
Customer c = new SubClass("a", "b", false);
String adresse = c.getAdress(); // <- Geht nicht
wenn die getter/setter nur in den Unterklassen definiert sind.
 
Du solltest die getter/setter auf jeden Fall in der abstrakten Oberklasse definieren.

1. hättest du sonst in jeder Unterklasse die gleichen Methoden und somit ziemlich viel doppelten Code
und
2. würde sowas nicht klappen:
Java:
Customer c = new SubClass("a", "b", false);
String adresse = c.getAdress(); // <- Geht nicht
wenn die getter/setter nur in den Unterklassen definiert sind.
Vielen Dank für die Antwort. Also es ist immer sinnvoll solche Hilfsmethoden in der abstrakten Klasse zu definieren.
 

Neue Themen


Zurück
Oben