JavaRush /Java Blog /Random-TL /Tanong at Sagot: Posible bang tukuyin ang mga abstract na...

Tanong at Sagot: Posible bang tukuyin ang mga abstract na pamamaraan sa isang panghuling klase?

Nai-publish sa grupo
Ang kawili-wili at mahalagang tanong na ito ay tinanong sa isa sa aking mga mambabasa sa isang panayam sa telepono para sa isang posisyon ng developer ng Java. Bagama't alam niyang imposibleng gumawa ng abstract na klase finalsa wikang Java , nalilito siya sa mga salita ng tanong. Ang sagot ay simple: hindi, finalhindi maaaring magkaroon ng mga abstract na pamamaraan sa isang -class. Bakit? Dahil sa sandaling magdeklara ka ng abstract na pamamaraan sa isang klase ng wikang Java, awtomatikong nagiging abstract ang klase na ito, at finalhindi ka makakagawa ng abstract na klase sa wikang Java. finalNangangahulugan ito na hindi maaaring magkaroon ng mga abstract na pamamaraan sa isang Java -class.
Tanong at Sagot: Posible bang tukuyin ang mga abstract na pamamaraan sa isang panghuling klase?  - 1
Maraming mga developer ng Java ang nalilito kapag sinasagot ang tanong na ito dahil sa mga salita. Kahit na pamilyar ang taong nagtanong sa pangkalahatang konsepto, maaaring hindi niya matanto na ang isang klase, pagkatapos magdeklara ng abstract na pamamaraan dito, ay nagiging abstract, at hindi ka makakagawa ng abstract na klase finalsa Java. Ang puntong ito ay naghihiwalay sa tanong na ito mula sa mas karaniwan at madalas itanong: posible ba sa Java na ideklara ang isang klase na abstract at pinal sa parehong oras? Tingnan natin ang isang halimbawang code upang ipakita na finalhindi posibleng magdeklara ng abstract na pamamaraan sa isang -class. Hayaan Hello.javakaming magkaroon public finalng isang klase na tinatawag na Hello, na may abstract na pamamaraan print().
public final class Hello {
  public abstract void print();
}
I-type ang code na ito sa IDE, makakatanggap ka ng sumusunod na mensahe ng error, sinasabi nila na Helloito ay dapat na isang abstract na klase upang ang mga abstract na pamamaraan ay maipahayag dito.
Tanong at Sagot: Posible bang tukuyin ang mga abstract na pamamaraan sa isang panghuling klase?  - 2
Tanong at Sagot: Posible bang tukuyin ang mga abstract na pamamaraan sa isang panghuling klase?  - 3
Ang parehong bagay ay mangyayari kung i-type mo ang code na ito sa Notepad at i-compile ito gamit ang javac utility mula sa command line. Ayon sa mga pagtutukoy ng Java, sa sandaling magdeklara ka ng abstract na pamamaraan sa loob ng isang klase, ang klase na iyon ay magiging abstract na klase, at dahil hindi ka makakagawa ng abstract na klase finalsa Java, bubuo ng error ang compiler. Ito ay totoo para sa parehong mga top-level na klase at nested na klase sa Java language. Kahit na magdeklara ka ng abstract na pamamaraan sa isang nested final-class, magiging pareho ang error. Ang isa pang kaugnay na tanong ay: maaari bang magkaroon ng mga static na pamamaraan ang abstract na klase sa Java? Sagot: oo, kaya nila, walang problema sa pagdedeklara ng isang static na pamamaraan sa isang abstract na klase, dahil para gumamit ng static na pamamaraan hindi mo kailangang lumikha ng isang halimbawa ng klase, maaari silang tawagan gamit ang pangalan ng klase. Maaari naming baguhin ang aming halimbawa upang isama Helloang isang pamamaraan sa class main(), na static sa Java, tulad ng ipinapakita sa ibaba:
public abstract class Hello {
  public abstract void print();
  public static void main(String args[]) {
     // Howой-то code
  }
}
Tulad ng nakikita mo, walang error sa compilation ang itinapon. Ang code na ito ay nag-compile nang walang mga problema, dahil sa Java maaari mong ganap na ligtas na magdeklara ng isang static na pamamaraan sa isang abstract na klase. Maikling konklusyon Imposibleng magdeklara ng abstract method sa isang final-class. Dahil kapag ginawa mo ito, awtomatikong nagiging abstract ang klase, ayon sa mga pagtutukoy ng Java. At dahil finalang isang -class sa Java ay hindi maaaring abstract, hindi ito katanggap-tanggap, at ipagbabawal ka ng compiler na gawin ito sa pamamagitan ng paghahagis ng error. Ngunit maaari mong ideklara ang mga static na pamamaraan kapwa sa pangwakas at sa mga abstract na klase, walang mga problema dito.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION