Probleme mit privaten Klassen

FabianLurz

Bekanntes Mitglied
Hallo Leute,
ich soll ein Programm schreiben dass ein Sudoku erzeugt. Das ist erstmal an sich nicht soo schwer, doch leider macht unser Prof sehr sehr viele nervige Vorgaben.
Das Problem ist....ich komme mit diesen privaten Klassenmethoden nicht zurecht.
Ich zeig euch mal welche Klasse ich aufrufen will.
Java:
private boolean checkRow(int [][]values){
    return false;
}
So die kann ja eigentlich gar nichts diese Klassenmehtode. Doch wie kann ich mir diese "false" anzeigen lassen, so dass es tatsächlich auf dem Bildschirm erscheint. Diese Methode ist ja nur sichtbar innerhalb der Klasse...
Vielen dank im vorraus.
 
Moment, Moment.
Der Threadtitel heißt "Probleme mit privaten Klassen" (das wäre dann eine "private class Irgendwas", z.B. als Klasse innerhalb einer Klasse). Dann schreibst du von Klassenmethoden, zeigst aber Code, der gar keine Klassenmethode ist. Dazu fehlt in der Deklaration das Schlüsselwort static.

… Also was ist nun das Problem? ^^'
 
Hey,
sorry ich meinte natürlich die Klassenmethode. Ich ging eigentlich davon aus, dass der Kleine Codefitzel eine Methode sei. Eine Methode innerhalb einer Klasse (in meinem Fall die class Sudoku).
 
Eine Methode, die in einer Klasse steht, ist nicht zwangsläufig eine Klassenmethode 😉

Es heißt Klassenmethode, weil die Methode über den Namen der Klasse angesprochen werden kann und keine Instanz der Klasse benötigt wird. Das ist bei nicht-statischen Methoden (ohne Schlüsselwort static) nicht so, für diese brauchst du zum Aufrufen ein Objekt, das eine Instanz der Klasse ist.

Also nochmal zur Verdeutlichung: geht es dir um Klassenmethoden oder um public vs. private?
 
ok....also wie würde das dann jetzt in meinem konkreten Fall aussehn.
Ich werde erstmal versuchen, dass noch besser zu beschreiben.
Also ich habe eine class Sudoku. In dieser class sind ein paar Methoden eingebaut (bspw. Wert setzen, Feld leeren etc...). Diese kann ich über die Mainclass aufrufen, da diese public sind.
Darunter findet sich eben auch der oben beschriebene Codefitzel, der sich ja nicht über die Mainclass aufrufen lässt, da er privat ist.
Achso und es geht dann wohl mehr um public vs private.
So nun ist eigentlich nur noch die Frage, wie ich diesen Codefitzel verwenden kann?
 
Zuletzt bearbeitet:
Eine private Methode ist dazu da, dass sie nur von der Klasse, die die Methode hat, verwendet wird und nicht von anderen, "draußen liegenden" Klassen verwendet werden kann. Ich geb dir mal ein Beispiel:

Java:
public class Dingens {
	
	public void getUserInput(String s) {
		if(s.equalsIgnoreCase("Hello")) {
			sayHello();
		} else {
			beUnfriendly();
		}
	}
	
	private void sayHello() {
		System.out.println("Hello! How are you?");
	}
	
	private void beUnfriendly() {
		System.out.println("Leave me alone!");
	}
}

Java:
public class DingensTest {
	
	public static void main(String[] args) {
		Dingens d = new Dingens();
		d.getUserInput(args[0]); //args[0] == Kommandozeilenparameter
	}
}

Aufruf mit
Code:
java DingensTest hello
oder anderen Zeichen als "hello".

Die einzige öffentliche Methode von Dingens ist getUserInput(). Diese Methode ruft wiederum, je nachdem, ob "hello"/"Hello" oder etwas anderes als Kommandozeilenparameter übergeben wurde, eine der beiden Methoden sayHello() oder beUnfriendly() auf. Die zwei Methoden sind privat, damit sie nicht außerhalb der Klasse Dingens aufgerufen werden können.
Hier ergibt das vielleicht alles noch nicht so viel Sinn, aber es ist wichtig, damit eine Methode nur dann aufgerufen wird, wenn ein bestimmter Kontext gegeben bzw. eine bestimmte Bedingung erfüllt ist.
 
Zuletzt bearbeitet:

Zurück
Oben