Hallo Community,
hier in diesem Fall gibt es verschiedene Pakete, die zum Schluss über die Main Methode dann wieder "verknüpft" werden damit gewisse sachen passieren können. Um dies machen zu können muss man ja die einzelnen Pakete importieren wenn es notwendig ist. Und die Konstruktoren müssen public sein, damit sie überhaupt gefunden werden können. Nun meine Frage müssen die Konstruktoren auch public sein, obwohl z.B. alle Klassen in einem Paket sind, damit sie sichtbar sind? Also die Importierung der Pakete fällt dann weg. Aber das mit public bringt mich durcheinander. Bitte um Antwort.
Beispiel: Strategy Muster
hier in diesem Fall gibt es verschiedene Pakete, die zum Schluss über die Main Methode dann wieder "verknüpft" werden damit gewisse sachen passieren können. Um dies machen zu können muss man ja die einzelnen Pakete importieren wenn es notwendig ist. Und die Konstruktoren müssen public sein, damit sie überhaupt gefunden werden können. Nun meine Frage müssen die Konstruktoren auch public sein, obwohl z.B. alle Klassen in einem Paket sind, damit sie sichtbar sind? Also die Importierung der Pakete fällt dann weg. Aber das mit public bringt mich durcheinander. Bitte um Antwort.
Beispiel: Strategy Muster
Java:
Interface Beissen(für Beissverhalten):
Interface: Beissverhalten
package beissen;
public interface Beissen {
void beissen();
}
Beisst(implementiert Interface Beissen)
package beissen.beissverhalten;
import beissen.Beissen;
public class Beisst implements Beissen{
public Beisst(){
}
public void beissen() {
System.out.println("Ich kann beissen!");
}
}
BeissNicht (implementiert Interface Beissen):
package beissen.beissverhalten;
import beissen.Beissen;
public class BeisstNicht implements Beissen{
public BeisstNicht(){
}
public void beissen() {
System.out.println("Ich kann nicht beissen!");
}
}
Interface Bellen (Für Bellverhalten):
package bellen;
public interface Bellen {
void bellen();
}
Bellt (implementiert Interface Bellen):
package bellen.bellverhalten;
import bellen.Bellen;
public class Bellt implements Bellen{
public Bellt(){
}
public void bellen() {
System.out.println("Ich kann bellen!");
}
}
BelltNicht(implementiert Interface Bellen)
package bellen.bellverhalten;
import bellen.Bellen;
public class BelltNicht implements Bellen{
public BelltNicht(){
}
public void bellen() {
System.out.println("Ich kann nicht bellen!");
}
}
Hund (abstract ist die Basisklasse):
import bellen.Bellen;
public abstract class Hund {
Bellen bellen;
Beissen beissen;
public abstract void anzeigen();
public Hund(){
}
public Hund(Beissen beissen, Bellen bellen){
this.beissen=beissen;
this.bellen=bellen;
}
public void drucke1(){
beissen.beissen();
}
public void drucke2(){
bellen.bellen();
}
public void setBeissen(Beissen beissen) {
this.beissen = beissen;
}
public void setBellen(Bellen bellen) {
this.bellen = bellen;
}
}
Pekinese (erbt von Hund):
package hund.hundArt;
import hund.Hund;
public class Pekinese extends Hund {
public Pekinese(){
}
@Override
public void anzeigen() {
System.out.println("Ich bin Pekinese!");
}
}
Pitbull (erbt von Hund):
package hund.hundArt;
import hund.Hund;
public class Pitbull extends Hund{
public Pitbull(){
}
@Override
public void anzeigen() {
System.out.println("Ich bin Pitbull!");
}
}
Main Methode:
package strategyhund;
import beissen.beissverhalten.BeisstNicht;
import bellen.bellverhalten.BelltNicht;
import hund.Hund;
import hund.hundArt.Pekinese;
public class Main {
public static void main(String[] args) {
Hund meinHund1=new Pekinese();
meinHund1.anzeigen();
meinHund1.setBeissen(new BeisstNicht());
meinHund1.setBellen(new BelltNicht());
meinHund1.drucke1();
meinHund1.drucke2();
}
}