Java metodes ignorēšana

Šajā apmācībā mēs ar piemēru palīdzību uzzināsim par metodes ignorēšanu Java.

Pēdējā apmācībā mēs uzzinājām par mantojumu. Mantošana ir OOP īpašība, kas ļauj mums no jaunas klases (apakšklases) atvasināt no esošās klases (virsklases). Apakšklase pārmanto superklases atribūtus un metodes.

Tagad, ja viena un tā pati metode ir definēta gan virsklasē, gan apakšklasē, tad apakšklases metode ignorē virsklases metodi. To sauc par metodes ignorēšanu.

1. piemērs: Metodes ignorēšana

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( @Override public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Izeja :

 Es esmu suns. 

Iepriekš minētajā programmā displayInfo()metode ir gan dzīvnieku superklasē, gan suņu apakšklasē.

Kad mēs saucam, displayInfo()izmantojot objektu d1 (apakšklases objekts), tiek izsaukta metode apakšklases Dog iekšpusē. displayInfo()No apakšklases metode ignorē to pašu metodi superclass.

Ievērojiet @Overrideanotācijas izmantošanu mūsu piemērā. Java anotācijas ir metadati, kurus mēs izmantojām, lai sniegtu informāciju kompilatoram. Šeit @Overrideanotācija norāda kompilatoru, ka metode pēc šīs anotācijas ignorē augstākās klases metodi.

Tas nav obligāti jālieto @Override. Tomēr, kad mēs to izmantojam, metodei jāievēro visi ignorēšanas noteikumi. Pretējā gadījumā kompilators radīs kļūdu.

Java svarīgākie noteikumi

  • Gan superklasei, gan apakšklasei ir jābūt vienādam metodes nosaukumam, vienādam atgriešanās tipam un vienam un tam pašam parametru sarakstam.
  • Mēs nevaram ignorēt metodi, kas deklarēta kā finalun static.
  • Mums vienmēr ir jāignorē abstraktās superklases metodes (par to runāsim turpmākajās apmācībās).

super atslēgvārds Java svarīgākajos

Izplatīts jautājums, kas rodas, veicot ignorēšanu Java, ir:

Vai mēs varam piekļūt superklases metodei pēc ignorēšanas?

Nu, atbilde ir . Lai piekļūtu superklases metodei no apakšklases, mēs izmantojam superatslēgvārdu.

2. piemērs: super atslēgvārda izmantošana

 class Animal ( public void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void displayInfo() ( super.displayInfo(); System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Izeja :

Es esmu dzīvnieks. Es esmu suns.

Iepriekš minētajā piemērā suns apakšklase ignorē displayInfo()dzīvnieka superklases metodi .

Kad metodi displayInfo()izsaucam, izmantojot suns apakšklases objektu d1, tiek izsaukta metode suņa apakšklasē; metode virsklasē netiek izsaukta.

displayInfo()Suņu apakšklases iekšpusē mēs esam izmantojuši superklases super.displayInfo()izsaukšanu displayInfo().

Ir svarīgi atzīmēt, ka Java konstruktori netiek mantoti. Tādējādi Java nepastāv konstrukcijas aizstājējs.

Tomēr mēs varam izsaukt superklases konstruktoru no tā apakšklasēm. Tam mēs izmantojam super(). Lai uzzinātu vairāk, apmeklējiet Java super atslēgvārdu.

Piekļuves specifikatori metodes ignorēšanā

Tai pašai metodei, kas deklarēta superklasē un tās apakšklasēs, var būt dažādi piekļuves specifikatori. Tomēr pastāv ierobežojums.

Apakšklasēs mēs varam izmantot tikai tos piekļuves specifikatorus, kas nodrošina lielāku piekļuvi nekā virsklases piekļuves specifikators. Piemēram,

Pieņemsim, ka metode myClass()klasē ir deklarēta protected. Tad to pašu metodi, myClass()kas apakšklases var būt vai nu public, vai protected, bet ne private.

3. piemērs: Piekļuves specifikators ignorēšanas sadaļā

 class Animal ( protected void displayInfo() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void displayInfo() ( System.out.println("I am a dog."); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.displayInfo(); ) ) 

Izeja :

 Es esmu suns. 

Iepriekš minētajā piemērā suns apakšklase ignorē displayInfo()dzīvnieka superklases metodi .

Ikreiz, kad mēs saucam, displayInfo()izmantojot d1 (apakšklases objekts), tiek izsaukta metode apakšklases iekšienē.

Ievērojiet, ka tas displayInfo()ir deklarēts protecteddzīvnieku superklasē. Šai pašai metodei ir publicpiekļuves specifikators suņu apakšklasē. Tas ir iespējams, jo publicnodrošina lielāku piekļuvi nekā protected.

Galvenās abstraktās metodes

Java valodā abstraktās klases tiek veidotas kā citu klašu superklase. Un, ja klasē ir abstrakta metode, tā ir obligāti jāpārņem.

Mēs uzzināsim vairāk par abstraktām klasēm un abstraktu metožu ignorēšanu turpmākajās apmācībās.

Interesanti raksti...