Junior — Middle
როგორ განსხვავდება ობიექტზე ორიენტირებული პროგრამირების სტატიკური მეთოდები შვილს კლასებში გადახედვადი მეთოდებისგან?
sobes.tech AI
პასუხი AI-სგან
Java-ში სტატიკური მეთოდები ეკუთვნიან თავად კლასს, არა ობიექტებს. ისინი იძახიან კლასის სახელით და ვერ იწერება შვილობილი კლასებში, რადგან ისინი არ მონაწილეობენ პოლიმორფიზმში.
სხვაგვარად, მეთოდები, რომლებიც შეიძლება გადაწერილ იქნას (არასტატიკური), ეკუთვნიან ობიექტებს და მხარს უჭერენ დინამიკურ პოლიმორფიზმს. როდესაც მეთოდი იძახება ბაზის კლასის მითითებით, რეალური განსახორციელება განსაზღვრულია ობიექტის ტიპით შესრულების დროს.
მაგალითი:
class Parent {
static void staticMethod() {
System.out.println("Parent-ის სტატიკური მეთოდი");
}
void instanceMethod() {
System.out.println("Parent-ის ინстанციის მეთოდი");
}
}
class Child extends Parent {
static void staticMethod() {
System.out.println("Child-ის სტატიკური მეთოდი");
}
@Override
void instanceMethod() {
System.out.println("Child-ის ინстанციის მეთოდი");
}
}
public class Test {
public static void main(String[] args) {
Parent p = new Child();
p.staticMethod(); // გამოტანა: Parent-ის სტატიკური მეთოდი
p.instanceMethod(); // გამოტანა: Child-ის ინстанციის მეთოდი
}
}
აქ, სტატიკური მეთოდი იძახება მითითების ტიპით (Parent), ხოლო არასტატიკური — ობიექტის ტიპით (Child).