Klassen klassen variable benutzen

denizz

Neues Mitglied
Hallo,
Ich habe zwei Klassen. Ich möchte file, die ich schon in der klasse fd erstellt habe, in klasse FunctionFile auch benuzten.
Vielen Dank im Voraus.


Java:
public class fd {
       
    private static File file;

    
    public static File create(String name, String Path){
     
        
        /** Create new File  */

        file = new File(Path + "\\" +name );
        file.mkdir();
        
        return file;
            
    
}
}



public class FunctionFile(String ordnerName) {

    
    public static void  Function(){
        
        

            /**Wie kann ich hier file  aus dem class fd benutzen?  */
         File hauptOrdner=fd.create.file;
         File unterOrdner= new File (file.getAbsoluteFile()+"\\"+ordnerName )
            

    }}
 
File haupt = fd.create()

Variablen IMMER klein und Klassen IMMER groß. Außer statischen Attribute. Guck dir bitte noch einmal Methoden und ihre Aufrufe an.
 
Erstmal, wie Gucky schon gesagt hat, Klassen IMMER groß, und Variablen UND Methoden IMMER klein!

Zudem, solltest du dir Getter- und Setter-Methoden anschauen.

Hier ein Beispiel:

Java:
package com.myapp.app;

import java.io.*;

public class ClassOne {
    
    private File file = null;

    public ClassOne(String fileName, String fileLocation) { file = new File(fileLocation + "/" + fileName); }

    public File getFile() { return file; }

    public void setFile(String fileName, String fileLocation) { this.file = new File(fileLocation + "/" + fileName); }

    public void create() throws IOException { createFile(); }

    private void createFile throws IOException() {
         file.getParentFile().mkdirs();
         file.createNewFile();
    }

}

// Neue Datei

public class ClassTwo {
     
    ClassOne c1 = new ClassOne("eineDatei.bin", System.getProperty("user.home") + "/.programmName"); // Niemals im echten Leben eine Variable so deklarieren! Wenn möglich immer in Methoden oder in dem Constructor. 

    private void eineMethodeOderSo() {
        try {
            c1.create();
        } catch (IOException ex) { System.err.println("Fehler beim xy!\n" + ex.toString()); }
    }

}

Wie du die Getter- und Setter-Methoden benutzen musst, ist denke ich mal klar.

Aber das sind so die Grundprinzipien der OOP. Lasse grundsätzlich andere Klassen nicht an solche Methoden, mache das immer durch Zwischenmethoden.
 
1. static lass mal weg, das killt die Objektorientierung in deinem Fall. Egal wie oft du eine Klasse mit new ... instanzierst, alle werden sie auf die ein und die gleiche Variable zeigen anstatt dass jede eine eigene Kopie bekommt !

2. Mach die Klassenvariablen private und schau dir Getter und Setter an. Darüber kannst du dann innerhalb der 2ten auf die Variablen der ersten zugreifen.

3. Du kannst auch die zweite Klasse innerhalb der ersten Klasse schreiben. Dann hat die innere Klasse Zugriff auf die Klassenvariablen der oberen. Das wird später bei ActionListenern usw. hilfreich.
 
Zuletzt bearbeitet:

Zurück
Oben