CodeGym /Blog Java /Random-PL /Metody Javy
John Squirrels
Poziom 41
San Francisco

Metody Javy

Opublikowano w grupie Random-PL
Zmienne i stałe w Javie przechowują wartości, natomiast metody zawierają zestaw operatorów wykonujących określone działania. Oznacza to, że metody w Javie określają zachowanie obiektów i wykonują akcje na niektórych zmiennych. Mogą wykonywać działania, a także generować określony wynik.

Jakie są metody w Javie?

Metody definiują zachowanie obiektów i są ciągiem poleceń pozwalającym na wykonanie jakiejś operacji w programie. W innych językach programowania metody są często określane jako „funkcje” i słusznie. W rzeczywistości metoda jest funkcją w sensie matematycznym. Zwykle na wejście metody podaje się coś (pewne zmienne), zmienne te są przetwarzane za pomocą sekwencji poleceń, a następnie metoda generuje wynik. Są szanse, że natknąłeś się już na metody, przynajmniej z publicznym static void main(String[] args) . Ta metoda zwykle rozpoczyna wykonywanie programu Java.

Jak zadeklarować metody w Javie?

Wszystkie metody w Javie tworzone są wewnątrz klas. Deklaruje się je w następujący sposób:

accessSpecifier ReturnType name (parameter list) {
//method body 
}
Na przykład:

public int addTwoNumbers (int a, int b){

//method body
return}
Gdzie public jest specyfikatorem dostępu, int jest typem zmiennej zwracanej przez metodę, addTwoNumbers jest nazwą metody, aib są parametrami metody. Przyjrzyjmy się trochę bardziej szczegółowo. Specyfikator dostępu służy do zdefiniowania typu dostępu metody. mogą być następujące:
  • public : dostęp do metody jest możliwy z dowolnej klasy.

  • private : dostęp jest dostępny w klasie, w której został zdefiniowany.

  • chroniony : dostęp jest możliwy tylko wewnątrz pakietu lub innych podklas w innym pakiecie.

  • domyślnie : dostęp jest możliwy z pakietu, w którym jest zadeklarowany. W tym przypadku słowo „domyślny” nie jest zapisane.

Return Type definiuje typ zwracany przez tę metodę. W powyższym przykładzie int jest typem zwracanym. Jeśli metoda nic nie zwraca, typ zwracany jest nieważny:

public void printSomething (String myString) {}
Nazwa metody to unikalna nazwa Twojej metody. W dalszej części tego artykułu wyjaśnimy niektóre zasady nazewnictwa w języku Java. W powyższych metodach nazwy to addTwoNumbers i printSomething . Lista parametrów to lista argumentów (typ danych i nazwa zmiennej), które przyjmuje metoda. W pierwszym przykładzie powyżej „int a, int b” są parametrami, w drugim String myString jest argumentem. Możesz także pozostawić to pole puste, jeśli nie chcesz używać żadnych parametrów w metodzie.

Przykład parametrów metody


public void printSomething (String myParameter1, int myParameter2) {}
Oto dwie zmienne, myParameter1 i myParameter2 . Są to parametry metody. to zestaw instrukcji ujętych w nawiasy klamrowe, które metoda wykona. Jeśli typ zwracany przez metodę nie jest pusty, słowo kluczowe return musi znajdować się w treści metody. po return następuje argument zwracany przez tę metodę. Aby więc stworzyć metodę, należy podać jej nazwę wraz z nawiasami, a w nawiasach, jeśli to konieczne, zmienne, na których będzie działać metoda. Przed nazwą metody znajduje się specyfikator dostępu i typ zmiennej zwracanej przez metodę lub void, jeśli metoda nic nie zwraca. W nawiasach klamrowych piszemy właściwą metodę, czyli sekwencję instrukcji, która najczęściej działa z argumentami metody. Oto przykład metody, która znajduje największą liczbę w tablicy i zwraca ją.

public int findBiggest(int[] numbers) {
   int max;
   max = numbers[0];
   for (int i = 1; i < numbers.length; i++) {
       if (max < numbers[i]) {
           max = numbers[i];
       }
   }
   return max;
}

Jak nazwać metodę?

Nie ma ścisłych zasad dotyczących nazewnictwa metod, są jednak wytyczne, których należy przestrzegać, jeśli planujesz rozwijać się zawodowo w Javie. Nazwy metod to bardzo często czasowniki pisane mieszaną literą, zaczynające się od małej litery, ale z użyciem dużej litery dla każdego kolejnego słowa (camelCase). Oto kilka przykładów:

int addTwoNumbers (int a, int b) 
void run() 

Jak wywołać metodę

Aby wywołać metodę wystarczy wpisać jej nazwę i ustawić odpowiednie zmienne jeśli były przy deklaracji. Wywołajmy metodę findBiggest w metodzie głównej :

public static void main(String[] args) {
  int[] array = new int[] {5, 7, -2, 6, 7, 1};
  int max = findBiggest(array);
   System.out.println("the biggest number in array is: " + max);
  }
Dane wyjściowe tego programu to:
największa liczba w tablicy to: 7

Różne typy metod w Javie

W Javie wszystko składa się z obiektów, a zachowanie obiektów jest definiowane za pomocą metod. Konwencjonalnie możemy powiedzieć, że Java ma metody predefiniowane i definiowane przez użytkownika. Metody predefiniowane to metody zawarte w klasach będących częścią samego języka Java.

Wstępnie zdefiniowane metody

Predefiniowane lub standardowe metody biblioteczne są wbudowane w Javę. Oczywiście każdy programista może z nich skorzystać, a nawet zmodyfikować je lokalnie dla swoich programów. Biblioteka klas Java znajduje się w pliku archiwum Java (na przykład *jar) z wirtualną maszyną Java (JVM) i środowiskiem wykonawczym Java. Mogą to być np. metody klasy Math takie jak min() , max() czy abs() . Lub metody manipulacji ciągami, takie jak concat() . Stwórzmy klasę z metodą główną i wywołajmy kilka standardowych metod bibliotecznych.

import static java.lang.Math.max;

public class Test {

    public static void main(String[] args) {
       int a = 5;
       int b = 7;
       int max = max(a,b);
       System.out.println(max);
       String str1 = "I am ";
       String str2 = "here ";
       String str3 = str1.concat(str2);
       System.out.println(str3);


   }

}
Należy pamiętać, że aby móc skorzystać z metod klasy Math należy ją zaimportować na początku programu. Jeśli tego nie zrobisz, możesz wpisać nazwę klasy przed nazwą metody oddzieloną kropką:

int max = Math.max(a,b);

Metody zdefiniowane przez użytkownika

Metody te są tworzone przez programistów na potrzeby ich projektów. Właściwie stworzyliśmy już zdefiniowaną przez użytkownika metodę findBiggest() powyżej. Dla konsolidacji utwórzmy inną metodę, która nic nie zwróci i nie będzie miała parametrów, a tylko odpowie na wpisaną nazwę i przywita się (czyli wyśle ​​sygnał do konsoli).

import java.util.Scanner;

public class Test {
  
   public void repeater() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}

Tworzenie metod statycznych w Javie

Ogólnie rzecz biorąc, metody w Javie są metodami obiektów. Aby wywołać metodę, należy utworzyć instancję klasy, w której zdefiniowano tę metodę. Istnieją jednak również metody statyczne. Różnią się od zwykłych tym, że są przypisane do klasy, a nie obiektu. Ważną właściwością metody statycznej jest to, że może ona uzyskać dostęp tylko do zmiennych/metod statycznych. Definiuje się je za pomocą słowa kluczowego static . Zatem w klasie Math wszystkie metody pracy ze zmiennymi są statyczne. Możemy stworzyć coś podobnego do klasy Math i zebrać w niej kilka metod statycznych, których można używać bez tworzenia instancji klasy zawierającej. Nazwijmy to Liczbami .

import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;


public class Numbers {
 

   public static int findMax(int left, int right) {
       return (left < right) ? right : left;
   
   }


   public static boolean isNegative(int number) {
       return number < 0;
   }

   public static long power(long number, int deg) {

       if (deg == 0) {
           number = 1;
           return number;
       } else {
           number = power(number, deg - 1) * number;
           return number;
       }
   }

   public static long abs(long number) {
       return number > 0 ? number : -number;
     }


    public static void main(String[] args) {
     
       int a = 5;
       int b = 7;
       long c = -7;
       long abs = abs(c);
       System.out.println(abs);
       System.out.println(findMax(a,b));
      
   }

}
Dane wyjściowe programu znajdują się tutaj:
7 7
Najpierw wywoływana jest metoda, która sprawdza wartość bezwzględną liczby, a następnie metoda, która szuka większej z dwóch liczb. Aby wywołać te metody , nie trzeba tworzyć instancji klasy Numbers , ponieważ obie metody są zdefiniowane jako statyczne.

Stosowanie metod instancji w kodzie Java

Metody instancji lub metody zwykłe można wywołać w instancji klasy, w której zdefiniowano metodę.

public class Cat implements Voice{
   String name;
   String breed;
   int year;


   public void talk() {
       System.out.println("meow meow");
   }
}
Aby wywołać metodę talk() , należy utworzyć instancję klasy Cat :

public class Demo {
   public static void main(String[] args) {
       Cat cat = new Cat ();
       cat.talk();
     
   }
}
Dane wyjściowe programu znajdują się tutaj:
miau miau

Metody abstrakcyjne w Javie

Metody abstrakcyjne w Javie to metody bez implementacji. Oznacza to, że nie zawierają kodu, gdy jest on zadeklarowany. Można je deklarować jedynie w klasach abstrakcyjnych i implementować w ich nieabstrakcyjnych potomkach. Utwórzmy klasę abstrakcyjną z jedną metodą abstrakcyjną myMethodAdd() .

abstract class DemoAbs {
   abstract void myMethodAdd();
}
Utwórzmy teraz klasę Child tej klasy abstrakcyjnej, DemoAbs . Tutaj koniecznie powinniśmy zaimplementować metodę myMethodAdd() .

public class myClass extends DemoAbs {
  
   void myMethodAdd() {
       System.out.println("hello");
   }

   public static void main(String[] args) {
       DemoAbs demoAbs = new myClass();
       demoAbs.myMethodAdd();
   }
}

Alokacja pamięci dla wywołań metod

Jest to dość złożony temat wymagający dokładniejszej analizy. Tutaj wymienimy tylko te najbardziej podstawowe, umożliwiające powierzchowne zapoznanie się z tematem. Pamięć JVM składa się ze sterty i obszarów stosu. Sterta to obszar pamięci, w którym przechowywane są obiekty Java. Pamięć stosu to tymczasowy obszar pamięci, w którym przechowywane są zmienne pierwotne i odniesienia do obiektów metod. Pamięć stosu zawiera wartości krótkotrwałe, które zależą od metody. Ten typ pamięci opiera się na zasadzie „ostatnie weszło, pierwsze wyszło” (LIFO). Pamięć stosu tworzy nowy blok, gdy wywołujemy metodę. Zawiera lokalne wartości pierwotne. Kiedy zakończymy metodę, blok utworzony w pamięci stosu staje się wolny.

Wniosek

W tym artykule zapoznaliśmy się z podstawami tworzenia metod w języku Java, a także jakie metody występują w Javie i jak z nimi pracować. Dowiedzieliśmy się, że metody determinują zachowanie klas. Bez metod niemożliwe byłoby wzajemne oddziaływanie obiektów. Aby utrwalić zdobytą wiedzę, sugerujemy obejrzenie lekcji wideo z naszego kursu Java
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION