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):