Οι μέθοδοι κλάσεων στην Java είναι λειτουργίες ή ενέργειες που μπορούν να εκτελεστούν από αντικείμενα της συγκεκριμένης κλάσης. Αυτές οι μέθοδοι ορίζονται εντός της κλάσης και μπορούν να χρησιμοποιηθούν για την εκτέλεση συγκεκριμένων εργασιών ή λειτουργιών που σχετίζονται με τα αντικείμενα της κλάσης.
Οι μέθοδοι κλάσεων συνήθως εκτελούν ενέργειες πάνω στα δεδομένα της κλάσης, μεταβάλλουν την κατάσταση των αντικειμένων ή επιστρέφουν κάποιο αποτέλεσμα. Μπορούν επίσης να δέχονται ορίσματα (παραμέτρους) για να εκτελέσουν ενέργειες με βάση αυτά τα ορίσματα.
Οι μέθοδοι κλάσεων μπορούν να χρησιμοποιηθούν για να οργανώσουν τον κώδικα, να εκτελέσουν επαναλαμβανόμενες εργασίες και να παρέχουν διεπαφή μεταξύ των αντικειμένων της κλάσης και του υπόλοιπου προγράμματος. Επίσης, μέσω των μεθόδων κλάσεων μπορεί να γίνει η επικοινωνία με άλλες κλάσεις, να γίνει αλληλεπίδραση με τον χρήστη και να επιτευχθεί η επεξεργασία δεδομένων.
Παράδειγμα:
public class Main { static void myMethod() { System.out.println("Hello World!"); // Εκτύπωση του κειμένου "Hello World!" } public static void main(String[] args) { myMethod(); // Κλήση της μεθόδου myMethod() } }
Ο παραπάνω κώδικας δημιουργεί μια απλή Java κλάση με το όνομα “Main”. Η κλάση αυτή περιέχει δύο μεθόδους: τη μέθοδο “myMethod()” και την κύρια μέθοδο “main()”.
Η μέθοδος “myMethod()” είναι μια στατική μέθοδος που εκτυπώνει το κείμενο “Hello World!” στην οθόνη.
Η κύρια μέθοδος “main()” είναι η εκκίνηση του προγράμματος. Μέσα σε αυτήν τη μέθοδο γίνεται κλήση της μεθόδου “myMethod()”, η οποία θα εκτελέσει την ενέργεια της εκτύπωσης του κειμένου “Hello World!” στην οθόνη.
Συνολικά, ο κώδικας εκτελείται απλά εκτυπώνοντας το μήνυμα “Hello World!” στην οθόνη κατά την εκτέλεση της κύριας μεθόδου “main()”.
[adinserter block=”2″]
Συχνά σε προγράμματα Java θα συναντήσετε μεθόδους και χαρακτηριστικά που είναι είτε στατικά είτε δημόσια.
Στο παράδειγμα που παραθέσαμε προηγουμένως, δημιουργήσαμε μια στατική μέθοδο. Μια στατική μέθοδος μπορεί να κληθεί χωρίς να χρειάζεται να δημιουργηθεί ένα αντικείμενο της κλάσης. Από την άλλη πλευρά, μια δημόσια μέθοδος (public) μπορεί να κληθεί μόνο από αντικείμενα της κλάσης.
Παράδειγμα:
public class Main { static void myStaticMethod() { System.out.println("Static methods can be called without creating objects"); // Εμφανίζει ένα μήνυμα που περιγράφει τη λειτουργία της στατικής μεθόδου } public void myPublicMethod() { System.out.println("Public methods must be called by creating objects"); // Εμφανίζει ένα μήνυμα που περιγράφει τη λειτουργία της δημόσιας μεθόδου } public static void main(String[] args) { myStaticMethod(); // Καλεί τη στατική μέθοδο // myPublicMethod(); // Αυτό θα προκαλούσε σφάλμα συντακτικού Main myObj = new Main(); // Δημιουργεί ένα αντικείμενο της κλάσης Main myObj.myPublicMethod(); // Καλεί τη δημόσια μέθοδο μέσω του αντικειμένου } }
Ο κώδικας δημιουργεί μία κλάση με όνομα “Main”. Μέσα στην κλάση “Main” ορίζονται τρεις μέθοδοι.
Η πρώτη μέθοδος, η myStaticMethod()
, είναι μια στατική μέθοδος που εμφανίζει ένα μήνυμα στην οθόνη που λέει “Static methods can be called without creating objects” (Οι στατικές μέθοδοι μπορούν να κληθούν χωρίς να δημιουργηθούν αντικείμενα).
Η δεύτερη μέθοδος, η myPublicMethod()
, είναι μια δημόσια μέθοδος που εμφανίζει ένα μήνυμα στην οθόνη που λέει “Public methods must be called by creating objects” (Οι δημόσιες μέθοδοι πρέπει να κληθούν δημιουργώντας αντικείμενα).
Η τρίτη μέθοδος, η main()
, είναι η κύρια μέθοδος του προγράμματος και είναι σημείο εκκίνησης για την εκτέλεση του κώδικα. Μέσα σε αυτήν τη μέθοδο γίνονται τα εξής:
- Καλείται η στατική μέθοδος
myStaticMethod()
, η οποία εμφανίζει το αντίστοιχο μήνυμα. - Υπάρχει ένα σχόλιο που απενεργοποιεί την κλήση της μη δημόσιας μεθόδου
myPublicMethod()
. - Δημιουργείται ένα αντικείμενο της κλάσης “Main” με τη χρήση της εντολής
new Main()
. - Καλείται η δημόσια μέθοδος
myPublicMethod()
μέσω του αντικειμένουmyObj
, η οποία εμφανίζει το αντίστοιχο μήνυμα.
Έτσι, όταν εκτελεστεί ο κώδικας, θα εμφανιστούν τα αντίστοιχα μηνύματα στην οθόνη, δείχνοντας τη διαφορά μεταξύ στατικών και δημόσιων μεθόδων καθώς και τον τρόπο κλήσης τους.
Για να προσπελάσετε μια μέθοδο, χρειάζεται να δημιουργήσετε ένα αντικείμενο της κλάσης και να χρησιμοποιήσετε τη σύνταξη με την τελεία (.):
Στο παρακάτω παράδειγμα, δημιουργούμε ένα αντικείμενο της κλάσης Main με το όνομα myObj. Χρησιμοποιούμε τη μέθοδο myMethod στο αντικείμενο για να εκτυπώσουμε ένα κείμενο:
public class Main { void myMethod() { System.out.println("Hello World!"); // Εκτύπωση του μηνύματος "Hello World!" } public static void main(String[] args) { Main myObj = new Main(); // Δημιουργία ενός νέου αντικειμένου της κλάσης Main myObj.myMethod(); // Κλήση της μεθόδου myMethod() στο αντικείμενο myObj } }
Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα “Main”. Στην κλάση αυτή, υπάρχουν δύο μέθοδοι: η μέθοδος “myMethod()” και η μέθοδος “main()”.
Η μέθοδος “myMethod()” είναι μια μέθοδος χωρίς επιστρεφόμενο τύπο (void), η οποία εκτυπώνει το μήνυμα “Hello World!” στην οθόνη.
Η μέθοδος “main()” είναι η κύρια μέθοδος που εκτελείται όταν το πρόγραμμα ξεκινάει. Στο εσωτερικό της μεθόδου, δημιουργείται ένα αντικείμενο της κλάσης “Main” με την χρήση της εντολής “Main myObj = new Main();”. Έπειτα, καλείται η μέθοδος “myMethod()” στο αντικείμενο “myObj” με την εντολή “myObj.myMethod();”, η οποία εκτυπώνει το μήνυμα “Hello World!” στην οθόνη.
Συνολικά, ο κώδικας εκτυπώνει το μήνυμα “Hello World!” στην οθόνη μέσω της κλήσης της μεθόδου “myMethod()”.
Παράδειγμα:
Δημιουργήστε ένα αντικείμενο αυτοκινήτου με όνομα myCar. Καλέστε τις μεθόδους fullThrottle() και speed() στο αντικείμενο myCar και εκτελέστε το πρόγραμμα:
public class Car { // Attributes String brand; // Η μάρκα του αυτοκινήτου String model; // Το μοντέλο του αυτοκινήτου int year; // Το έτος κατασκευής του αυτοκινήτου double price; // Η τιμή του αυτοκινήτου // Methods public void fullThrottle() { System.out.println("The car is going as fast as it can!"); // Εμφανίζει μήνυμα ότι το αυτοκίνητο πηγαίνει όσο γρήγορα μπορεί } public void speed(int maxSpeed) { System.out.println("Max speed is: " + maxSpeed); // Εμφανίζει τη μέγιστη ταχύτητα που μπορεί να αναπτύξει το αυτοκίνητο } // Main method public static void main(String[] args) { Car myCar = new Car(); // Δημιουργία ενός αντικειμένου Car myCar.fullThrottle(); // Κλήση της μεθόδου fullThrottle() myCar.speed(200); // Κλήση της μεθόδου speed() } }
[adinserter block=”3″]
Ο παραπάνω κώδικας περιέχει την κλάση “Car” που αντιπροσωπεύει ένα αυτοκίνητο. Η κλάση έχει τέσσερα γνωρίσματα (μεταβλητές): “brand” (μάρκα), “model” (μοντέλο), “year” (έτος) και “price” (τιμή), τα οποία αντιπροσωπεύουν τα χαρακτηριστικά ενός αυτοκινήτου.
Στη συνέχεια, η κλάση περιέχει δύο μεθόδους. Η πρώτη μέθοδος “fullThrottle()” εμφανίζει ένα μήνυμα στην οθόνη που δηλώνει ότι το αυτοκίνητο πηγαίνει όσο γρήγορα μπορεί. Η δεύτερη μέθοδος “speed(int maxSpeed)” δέχεται έναν αριθμητικό παράμετρο “maxSpeed” και εμφανίζει τη μέγιστη ταχύτητα που μπορεί να αναπτύξει το αυτοκίνητο, συνδυάζοντας το μήνυμα με την τιμή της παραμέτρου.
Τέλος, η κλάση περιέχει την κύρια μέθοδο “main”, όπου δημιουργείται ένα αντικείμενο της κλάσης “Car” με την χρήση του “new Car()”. Στη συνέχεια, καλούνται οι μέθοδοι “fullThrottle()” και “speed(200)” στο αντικείμενο “myCar”, εμφανίζοντας τα αντίστοιχα μηνύματα στην κονσόλα.
Έτσι, ο παραπάνω κώδικας δημιουργεί ένα αντικείμενο αυτοκινήτου και εμφανίζει δύο μηνύματα στην οθόνη, που αφορούν την ταχύτητα του αυτοκινήτου.
Το αποτέλεσμα που θα εμφανιστεί στην οθόνη είναι:
“The car is going as fast as it can!”
“Max speed is: 200”
Μπορούμε επίσης να αλλάξουμε τις τιμές των χαρακτηριστικών του αντικειμένου myCar
χρησιμοποιώντας τη σύνταξη myCar.attributeName = newValue
. Για παράδειγμα, μπορούμε να αλλάξουμε την τιμή του price
χαρακτηριστικού του myCar
ως εξής:
myCar.price = 30000;
Στη συνέχεια, μπορούμε να καλέσουμε ξανά τη μέθοδο speed()
για να εμφανιστεί η νέα τιμή:
myCar.speed(200);
Η έξοδος θα είναι:
Max speed is: 200
Επιπλέον, μπορούμε να δημιουργήσουμε και άλλα αντικείμενα της κλάσης Car
και να τους αλλάξουμε τις τιμές των χαρακτηριστικών τους. Σε αυτήν την περίπτωση, κάθε αντικείμενο θα έχει διαφορετικές τιμές για τα χαρακτηριστικά του, καθώς κάθε αντικείμενο αποτελεί μια ξεχωριστή ενότητα με τις δικές του τιμές.
Όπως αναφέραμε στο κεφάλαιο των κλάσεων, είναι μια καλή πρακτική να δημιουργούμε ένα αντικείμενο μιας κλάσης και να το χρησιμοποιούμε σε άλλη κλάση.
Να θυμάστε ότι το όνομα του αρχείου Java πρέπει να ταυτίζεται με το όνομα της κλάσης. Στο παρακάτω παράδειγμα, έχουμε δημιουργήσει δύο αρχεία στον ίδιο κατάλογο:
Main.java
public class Main { public static void main(String[] args) { Second mySecond = new Second(); System.out.println(mySecond.x); } }
Second.java
public class Second { int x = 5; }
Στο παραπάνω παράδειγμα, δημιουργούμε ένα αντικείμενο mySecond
της κλάσης Second
στο αρχείο Main.java
και εκτυπώνουμε την τιμή της μεταβλητής x
του αντικειμένου αυτού. Η τιμή αυτή προέρχεται από τη δήλωση της μεταβλητής x
στο αρχείο Second.java
.
Στη συνέχεια, μπορούμε να τρέξουμε το πρόγραμμα αυτό, και θα εμφανιστεί η τιμή της μεταβλητής x
που είναι 5.