Pastāsti par metožu pārslogojuma noteikumiem.
sobes.tech AI
Atbilde no AI
Metodju pārklāšana (Method Overloading) objektorientētajā programmēšanā ļauj definēt vairākus metodus vienā klasē ar to pašu nosaukumu, bet dažādām signatūrām.
Galvenie noteikumi metodju pārklāšanai:
-
Signatūrās ir atšķirības: Metoda signatūra ietver metodes nosaukumu un parametru tipu sarakstu atbilstošā secībā. Lai metodes tiktu uzskatītas par pārklātām, to signatūrām jāatšķiras.
// Atšķirīgu signatūru piemēri void print(int i) { } void print(String s) { } void print(int i, String s) { } void print(String s, int i) { } // Atšķiras parametru secība -
Metodes nosaukums ir jābūt vienādam: Pārklātie metodiem jābūt ar vienādu nosaukumu.
// Pareizs pārklāšanas piemērs class Example { void process(int a) { } void process(double b) { } } -
Atgriešanas vērtības tips nav signatūras daļa: Tikai atgriešanas vērtības tipa maiņa nepadara metodes par pārklātām. Kompilators nevarēs atšķirt, kuru metodi izsaukt, ja signatūras ir vienādas:
// Nav pārklāšana - kļūda kompilācijā int calculate() { return 1; } String calculate() { return "error"; } -
Piekļuves modifikatori un izņēmumu specifikatori neietekmē pārklāšanu: Līdzīgi kā atgriešanas tips, tikai piekļuves modifikatoru (
public,private,protected,default) vai izņēmumu saraksta (throws) maiņa neizraisa pārklāšanu.// Nav pārklāšana - kļūda kompilācijā, ja signatūras ir vienādas public void doSomething() { } private void doSomething() { } -
Parametru secība ir nozīmīga: Parametru tipu maiņa padara signatūras atšķirīgas.
// Ir pārklāšana void setup(int width, int height) { } void setup(int height, String unit) { } // Atšķiras ar otro parametru void setup(String unit, int size) { } // Atšķiras ar tipu un secību -
Parametru skaits ir nozīmīgs: Atšķirīgs parametru skaits rada atšķirīgas signatūras.
// Ir pārklāšana void log(String message) { } void log(String message, int level) { }
Tādējādi galvenais faktors pārklāšanai ir metodes signatūras unikālitāte, kas tiek noteikta ar tās nosaukumu un parametru kopumu (tipiem un secību).