Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Klassendesign / Wann Interface implementieren und wann Klassen vererben?
ich bin gerade dabei mein Java Wissen aufzufrischen und bin auf ein Merkmal gestoßen, was ich bis jetzt noch nicht gebraucht habe...
Folgendes Programm:
Java:
public class Auto {
protected int anzahl_türen;
protected int ps;
public Auto(int anzahl_türen, int ps){
this.anzahl_türen = anzahl_türen;
this.ps = ps;
}
public void fahre(){
System.out.println("Ich fahre jetzt!");
}
public void bremse(){
System.out.println("Ich bremse jetzt!");
}
}
Java:
public class Mercedes extends Auto{
protected String modell;
public Mercedes(int anzahl_türen, int ps, String modell){
super(anzahl_türen, ps);
this.modell = modell;
}
@Override
public void fahre() {
System.out.println("Ich fahre sehr schnell!");
}
@Override
public void bremse(){
System.out.println("Ich bremse jetzt sehr stark!");
}
}
Dieses Prinzip der Vererbung habe ich bis jetzt immer genutzt(natürlich in größerem Umfang)...
Jetzt das gleiche mit Interfaces:
Java:
public class Auto {
protected int anzahl_türen;
protected int ps;
public Auto(int anzahl_türen, int ps){
this.anzahl_türen = anzahl_türen;
this.ps = ps;
}
}
Java:
public class Mercedes extends Auto implements fahrbar{
protected String modell;
public Mercedes(int anzahl_türen, int ps, String modell){
super(anzahl_türen, ps);
this.modell = modell;
}
@Override
public void fahre() {
System.out.println("Ich fahre sehr schnell!");
}
@Override
public void bremse(){
System.out.println("Ich bremse jetzt sehr stark!");
}
}
Interface:
Java:
public interface fahrbar {
public void fahre();
public void bremse();
}
Welche der Varianten wird in Java vorgesehen und habe ich das Interface überhaupt richtig angewendet?
Du kannst in Java beide Varianten verwenden. Was genau möchtest du denn machen?
Das Interface würde ich in diesem Fall der Klasse Auto geben. Prinzipiell kann es aber auch Sinn machen, erst der erbenden Klasse (Mercdes) das Interface implementieren zu lassen.
vielen Dank für deine Antwort:toll:
Manchmal verwirren mich diese Dinge einfach nur, weil man sie nicht unbedingt braucht um ein Programm zu schreiben. Ich wundere mich dann immer, warum das Programm trotzdem läuft und ich keine der Dinge richtig verfolgt habe, welche ich in meinem Buch gelernt habe...
Diese Richtlinien dienen nur der Überschaubarkeit und Wartbarkeit oder?