Vererbung und abstrakte Klassen

Vererbung

public class Tier {

    private String name;
    private double gewicht;
    private String futterzeit;
    private int anzahlBeine;

    public Tier(String name, double gewicht) {
        this.name = name;
        this.gewicht = gewicht;
    }

    public void laufe() {
        System.out.println("Ich laufe");
    }

    public void setAnzahlBeine(int anzahlBeine) {
        this.anzahlBeine = anzahlBeine;
    }

    public int getAnzahlBeine() {
        return anzahlBeine;
    }
}
Java
public class Loewe extends Tier{

    private String maehnenShampooMarke;

    public Loewe(String name, double gewicht) {
        super(name,gewicht);
    }

    public int bruelle(int dezibel) {
        System.out.println("Ich brülle mit "+dezibel+ " dB");
        return dezibel;
    }
}
Java
public Loewe(String name, double gewicht) {
    this.name = name;
    this.gewicht = gewicht;
}
Java

name has private access in Tier

In Tier:

public void setName(String name) {
     this.name = name;
}
Java

In Loewe:

setName(name);
Java

Übersicht über die Sichtbarkeit von Feldern und Methoden

Modifikator Schlüsselwort UML-Symbol sichtbar in Klasse sichtbar im Package sichtbar in jeder Unterklasse Überall sichtbar

private

private

-

package private

ohne

~

protected

protected

#

public

public

+

Übersicht über die Verzeichnisstruktur:

Zoohandlung/Tier.java:

package zoohandlung;

public abstract class Tier {

    String name;
    double gewicht;
    String futterzeit;
    int anzahlBeine;

    public Tier(){}

    public Tier(String name, double gewicht) {
        this.name = name;
        this.gewicht = gewicht;
    }

    public void laufe() {
        System.out.println("Ich laufe");
    }

    public void setAnzahlBeine(int anzahlBeine) {
        this.anzahlBeine = anzahlBeine;
    }

    public int getAnzahlBeine() {
        return anzahlBeine;
    }

    @Override
    public String toString(){
        return "Ich heiße "+name+" und wiege "+gewicht+" kg";
    }
}
Java

Zoohandlung/Loewe.java:

package zoohandlung;

public class Loewe extends Tier {

    String maehnenShampooMarke;

    public Loewe(String name, double gewicht) {
        this.name = name;
        this.gewicht = gewicht;
    }

    public Loewe(String name, double gewicht, String msm) {
        this.name = name;
        this.gewicht = gewicht;
        this.maehnenShampooMarke = msm;
    }

    public int bruelle(int dezibel) {
        System.out.println("Ich brülle mit " + " dB");
        return dezibel;
    }
}
Java

Zoohandlung/Papagei.java:

package zoohandlung;

public class Papagei extends Tier {

    String lieblingswort;
    double spannweite;

    public Papagei(String name, double gewicht, String lieblingswort, double spannweite) {
        super(name,gewicht);
        this.lieblingswort=lieblingswort;
        this.spannweite=spannweite;
    }

    public void fliege() {
        System.out.println("Ich fliege");
    }

    public String sprich(String wort) {
        System.out.println(wort);
        return wort;
    }
}
Java

externesPackage/ExterneMainKlasse.java:

package externesPackage;

import zoohandlung.Papagei;

public class ExterneMainKlasse {
    public static void main(String[] args) {
        Papagei p=new Papagei("Ara", 12.32,"Hallo", 40);
        p.sprich("Hallo");
        p.setAnzahlBeine(2);
        System.out.println(p);
    }
}
Java
import zoohandlung.Papagei;
import zoohandlung.Loewe;
Java
import zoohandlung.*;
Java