Wywoływanie metod

Metody definiujemy w ramach definicji klas, tj. wewnątrz klas. Klasy definiują rodzaje bytów a obiekty (tj. instancje klas) konkretne byty. Metody które operują na obiektach, np. metoda która usuwa konkretny – reprezentowany przez obiekt klasy File – zbiór dyskowy, wywołujemy dla obiektów. Przykładowo, aby usunąć plik o nazwie file.txt z katalogu C:/mydir/ możemy napisać:

File myFile = new File("C:/mydir/file.txt");

boolean isDeleted = myFile.delete();

if(isDeleted)
  System.out.println("Plik " + myFile.getPath() + " skasowano!");
else
  System.out.println("Pliku " + myFile.getPath() + " nie skasowano!");

W pierwszej linii tworzymy obiekt reprezentujący wskazany plik. Następnie, wywołujemy dla tego obiektu metodę delete(). Metoda ta kasuje plik i zwraca wartość typu logicznego (tj. boolean) informującą o tym, czy plik udało się skasować. Jeśli tak to jest to wartość true a jeśli nie to false. Wartość tą przypisujemy do zmiennej isDeleted. Potem używamy instrukcji IF-ELSE aby wyświetlić stosowny komunikat. Metoda getPath() używana przy wyświetlaniu komunikatu zwraca ścieżkę dostępu do pliku reprezentowanego przez obiekt dla którego została wywołana.

Jak widzimy w powyższym przykładzie metodę dla danego obiektu wywołujemy za pomocą symbolu kropki. Składnia instrukcji wywołania metody jest następująca:

{obiekt}.{nazwa metody}( {parametry wywołania metody}? );

Jeśli metoda zwraca jakąś wartość to możemy tą wartość np. przypisać do zmiennej, tak jak w powyższym przykładzie przypisujemy wartość zwracaną przez metodę delete() do zmiennej isDeleted.

Wywołanie metody zwracającej wartość jakiegoś typu możemy umieścić wszędzie tam, gdzie możemy umieścić wartość tego typu. Warunkiem instrukcji IF może być dowolne wyrażenie które wylicza się do wartości typu boolean, tak więc może być nim także wywołanie metody delete() dla obiektu typu File. Powyższy kod możemy wobec tego przepisać w nieco krótszej formie:

File myFile = new File("C:/mydir/file.txt");

if(myFile.delete())
  System.out.println("Plik " + myFile.getPath() + " skasowano!");
else
  System.out.println("Pliku " + myFile.getPath() + " nie skasowano!");

Spróbujmy teraz powyższy kod – w nieco zmienionej formie – opakować w klasę o nazwie FileUtils. Implementacja takiej klasy mogłaby wyglądać następująco:

public class FileUtils{
  public String deleteFile(String filePath) {
    File myFile = new File(filePath);

    if(myFile.delete())
      return "Plik " + filePath + " skasowano!";
    else
      return "Pliku " + filePath + " nie skasowano!";
  }
}

Zauważmy, że metoda deleteFile(…) którą zaimplementowaliśmy w klasie FileUtils nie wyświetla teraz napisu informującego o statusie operacji, ale zwraca go jako wynik swojego działania. Możemy teraz tą metodę wywołać w sposób następujący:

FileUtils utils = new FileUtils();

String fileStatus = utils.deleteFile("C:/mydir/file.txt");

System.out.println(fileStatus);
0 0 votes
Daj ocenę