1. व्हेल आणि गायी

येथे एक मनोरंजक प्राणीशास्त्रीय तथ्य आहे: एक गाय व्हेलच्या अगदी जवळ असते, उदाहरणार्थ, हिप्पोपोटॅमसच्या. असे दिसून आले की गायी आणि व्हेल तुलनेने जवळचे नातेवाईक आहेत.

इकडे पहा. चला तुम्हाला Polymorphism बद्दल सांगतो - OOP चे आणखी एक शक्तिशाली साधन . त्याची चार वैशिष्ट्ये आहेत.


2. वारसा हा रामबाण उपाय नाही

Cowकल्पना करा की तुम्ही खेळासाठी वर्ग लिहिला आहे . त्यात अनेक फील्ड आणि पद्धती आहेत. या वर्गातील वस्तू विविध गोष्टी करू शकतात: चालणे, खाणे आणि झोपणे. गायी सुद्धा चालताना घंटा वाजवतात. समजा तुम्ही वर्गातील प्रत्येक गोष्ट अगदी लहान तपशीलापर्यंत लागू केली आहे.

आणि मग तुमचा क्लायंट येतो आणि म्हणतो की तिला एक नवीन गेम स्तर सोडायचा आहे, ज्यामध्ये सर्व क्रिया समुद्रात होतात आणि मुख्य पात्र व्हेल आहे.

तुम्ही Whaleवर्ग डिझाईन करायला सुरुवात करता आणि लक्षात येते की तो वर्गापेक्षा थोडा वेगळा आहे Cow. दोन्ही वर्गांचे तर्कशास्त्र अगदी सारखे आहे आणि तुम्ही वारसा वापरण्याचे ठरवता.

जावा मध्ये बहुरूपता

Cowपालक वर्गाची भूमिका घेण्यासाठी वर्ग आदर्श आहे: त्यात सर्व आवश्यक चल आणि पद्धती आहेत . आपल्याला फक्त व्हेलला पोहण्याची क्षमता देण्याची गरज आहे. पण एक समस्या आहे: तुमच्या व्हेलला पाय, शिंगे आणि घंटा आहे. शेवटी, ही कार्यक्षमता वर्गात लागू केली जाते Cow. इथे काय करता येईल?

जावा मध्ये बहुरूपता.  वारसा

3. पद्धत अधिलिखित

पद्धत ओव्हरराइडिंग आमच्या बचावासाठी येते. जर आम्हाला एखादी पद्धत वारशाने मिळाली जी आमच्या नवीन वर्गात आम्हाला पाहिजे तसे करत नाही, तर आम्ही ती पद्धत दुसर्याने बदलू शकतो.

पद्धत अधिलिखित

हे कसे केले जाते? आमच्या वंशज वर्गात, आम्ही मूळ वर्गाच्या पद्धतीप्रमाणेच तीच पद्धत घोषित करतो जी आम्ही अधिलिखित करू इच्छितो. त्यात आम्ही आमचा नवीन कोड लिहितो. आणि तेच आहे - जणू काही पालक वर्गातील जुनी पद्धत अस्तित्वात नाही.

हे कसे कार्य करते:

कोड वर्णन
class Cow
{
   public void printColor ()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a cow");
   }
}

class Whale extends Cow
{
   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
  • येथे दोन वर्ग परिभाषित केले आहेत — CowआणिWhale
  • WhaleवारसाCow
  • वर्ग पद्धत Whaleओव्हरराइड करतोprintName()
public static void main(String[] args)
{
   Cow cow = new Cow();
   cow.printName();
}
हा कोड स्क्रीनवर खालील मजकूर प्रदर्शित करतो:
I'm a cow
public static void main(String[] args)
{
   Whale whale = new Whale();
   whale.printName();
}
हा कोड स्क्रीनवर खालील दाखवतो:
I'm a whale

क्लास इनहेरिट केल्यानंतर Cowआणि printNameपद्धत ओव्हरराइड केल्यानंतर, Whaleक्लासमध्ये प्रत्यक्षात खालील डेटा आणि पद्धती असतात:

class Whale
{
   public void printColor()
   {
      System.out.println("I'm a white whale");
   }

   public void printName()
   {
      System.out.println("I'm a whale");
   }
}
आम्हाला कोणत्याही जुन्या पद्धतीबद्दल माहिती नाही.