CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ اوور رائڊنگ جو طريقو
John Squirrels
سطح
San Francisco

جاوا ۾ اوور رائڊنگ جو طريقو

گروپ ۾ شايع ٿيل
سلام توھان اڳ ۾ ئي جاوا طريقا استعمال ڪري رھيا آھيو ۽ انھن بابت گھڻو ڄاڻو ٿا. توهان شايد ان صورتحال کي منهن ڏنو آهي جتي هڪ طبقي جا ڪيترائي طريقا ساڳيا نالا آهن پر مختلف پيٽرولن سان. توهان کي ياد هوندو ته انهن حالتن ۾ اسان استعمال ڪيو طريقو اوورلوڊنگ. اڄ اسان هڪ ٻي صورتحال تي غور ڪري رهيا آهيون. تصور ڪريو ته اسان وٽ ھڪڙو گڏيل طريقو آھي، پر اھو مختلف ڪمن کي مختلف طبقن ۾ ڪرڻ گھرجي. اسان هن رويي کي ڪيئن لاڳو ڪريون ٿا؟ سمجھڻ لاء، اچو ته جانورن جي والدين طبقي تي غور ڪريو، جيڪو جانورن جي نمائندگي ڪري ٿو، ۽ اسان ان ۾ ڳالهائڻ جو طريقو ٺاھينداسين :
public class Animal {

   public void speak() {

       System.out.println("Hello!");
   }
}
جيتوڻيڪ اسان صرف پروگرام لکڻ شروع ڪيو آهي، توهان کي شايد هڪ امڪاني مسئلو نظر اچي ٿو: دنيا ۾ ڪيترائي جانور آهن، ۽ اهي سڀ مختلف طرح سان ڳالهائين ٿا: ٻليون ميون، بتھ ڪوڪ، ۽ سانپ هيس. ڪئين طريقي سان اوور رائڊنگ ڪم ڪندو آهي - 2اسان جو مقصد سادو آهي: ڳالهائڻ جا ڪيترائي طريقا پيدا ڪرڻ کان پاسو ڪريو. ميونگ لاءِ catSpeak() طريقو ٺاهڻ جي بدران ، هڪ snakeSpeak() طريقو هِسنگ وغيره لاءِ، اسان چاهيون ٿا اسپيڪ() ميٿڊ کي سڏڻ ۽ سانپ هِس، ٻلي ميوو، ۽ ڪُتي جي ڀنڪ. اسان هن کي آساني سان حاصل ڪري سگھون ٿا طريقي سان استعمال ڪندي overriding. وڪيپيڊيا ’اوور رائيڊنگ‘ جي اصطلاح جي هيٺين وضاحت ڏئي ٿو: ميٿڊ اوور رائيڊنگ، اعتراض تي مبني پروگرامنگ ۾، هڪ ٻوليءَ جي خصوصيت آهي جيڪا هڪ ذيلي طبقي يا ٻار طبقي کي اجازت ڏئي ٿي ته ڪنهن مخصوص طريقي تي عمل درآمد ڪري، جيڪا اڳ ۾ ئي ان جي سپر ڪلاسز مان هڪ طرفان مهيا ڪيل هجي يا والدين طبقن اهو بنيادي طور تي صحيح آهي. ميٿڊ اوور رائيڊنگ توهان کي والدين ڪلاس جو ڪجهه طريقو اختيار ڪرڻ جي اجازت ڏئي ٿي ۽ هر ٻار جي ڪلاس ۾ پنهنجو پاڻ لاڳو ڪرڻ لکو. نئون نفاذ ٻارن جي ڪلاس ۾ والدين جي عمل کي 'بدلائي ٿو'. اچو ته ڏسو ته اهو ڪيئن ڏسڻ ۾ اچي ٿو هڪ مثال ۾. 4 ڪلاس ٺاھيو جيڪي اسان جي جانورن جي طبقي کي ورثي ۾ آڻين:
public class Bear extends Animal {
   @Override
   public void speak() {
       System.out.println("Growl!");
   }
}
public class Cat extends Animal {

   @Override
   public void speak() {
       System.out.println("Meow!");
   }
}

public class Dog extends Animal {

   @Override
   public void speak() {
       System.out.println("Woof!");
   }
}


public class Snake extends Animal {

   @Override
   public void speak() {
       System.out.println("Hiss!");
   }
}
"هتي هڪ ننڍڙو لائف هيڪ آهي مستقبل لاءِ: والدين طبقي جي طريقن کي اوور رائڊ ڪرڻ لاءِ، IntelliJ IDE ۾ چائلڊ ڪلاس جي ڪوڊ ڏانهن وڃو، Ctrl+O تي ڪلڪ ڪريو، ۽ مينيو ۾ "اوور رائڊ طريقا..." چونڊيو. هوٽ ڪيز استعمال ڪرڻ جي عادت حاصل ڪريو. شروعات کان وٺي - اهو توهان کي پروگرامن کي تيزيءَ سان لکڻ ۾ مدد ڪندو! اسان کي گهربل رويي جي وضاحت ڪرڻ لاءِ، اسان ڪجھ شيون ڪيون:
  1. هر ٻار جي ڪلاس ۾، اسان هڪ طريقو ٺاهيو جيڪو ساڳئي نالي سان والدين طبقي جي طريقي سان.

  2. اسان گڏ ڪرڻ واري کي ٻڌايو ته طريقي کي نالو ڏيڻ ساڳيو ئي والدين طبقي ۾ واقع نه هو: اسان ان جي رويي کي ختم ڪرڻ چاهيون ٿا. هن کي گڏ ڪرڻ لاءِ ڪمپلر ڏانهن، اسان سيٽ ڪيو @ اووررائيڊ تشريح مٿي ڏنل طريقي سان.
    جڏهن مٿي رکيل طريقي سان، @Override تشريح مرتب ڪندڙ کي ڄاڻ ڏئي ٿي (انهي سان گڏ پروگرامر توهان جو ڪوڊ پڙهي رهيا آهن): 'سڀ ڪجهه ٺيڪ آهي. هي ڪا غلطي ناهي. مان وساري نه رهيو آهيان. مون کي خبر آهي ته اهڙو طريقو اڳ ۾ ئي موجود آهي ۽ مان ان کي ختم ڪرڻ چاهيان ٿو.

  3. اسان هر ٻار جي ڪلاس لاءِ گهربل عمل لکيا. جڏهن ڳالهائڻ () طريقي کي سڏيو ويندو آهي، هڪ سانپ کي هسڻ گهرجي، هڪ ڀڄڻ گهرجي، وغيره.
اچو ته ڏسو ته اهو ڪيئن ڪم ڪري ٿو هڪ پروگرام ۾:
public class Main {

   public static void main(String[] args) {

       Animal animal1 = new Dog();
       Animal animal2 = new Cat();
       Animal animal3 = new Bear();
       Animal animal4 = new Snake();

       animal1.speak();
       animal2.speak();
       animal3.speak();
       animal4.speak();
   }
}
ڪنسول آئوٽ:
Woof!
Meow!
Growl!
Hiss!
تمام سٺو! هر شي ڪم ڪري ٿي جيئن ان کي گهرجي! اسان 4 حوالا متغير ٺاھيا آھن جيڪي جانورن جي والدين طبقي جي شين کي ذخيرو ڪن ٿا، ۽ اسان انھن کي 4 مختلف ٻارن جي ڪلاسن جا مثال ڏنا آھن. نتيجي طور، هر شئي پنهنجي رويي کي ظاهر ڪري ٿو. هر ٻار جي طبقي لاءِ، اوور رائڊ ٿيل اسپيڪ() طريقو بدلايو ويو 'آبائي' اسپيڪ () طريقو جانورن جي طبقي ۾ (جيڪو صرف ڏيکاري ٿو 'هيلو!'). ڪئين طريقي سان اوور رائيڊنگ ڪم ڪندو آهي - 3اوور رائيڊنگ جون ڪيتريون ئي حدون آهن:
  1. اوور رائڊ ٿيل طريقي کي لازمي طور تي ساڳيو پيرا ميٽر هجڻ گهرجي جيئن والدين طريقي سان.

    جيڪڏهن والدين طبقي جي ڳالهائڻ واري طريقي ۾ هڪ اسٽرنگ پيٽرولر آهي، ٻار جي طبقي ۾ اوور رائڊ ٿيل طريقو پڻ هڪ اسٽرنگ پيٽرولر هجڻ گهرجي. ٻي صورت ۾، مرتب ڪندڙ هڪ غلطي پيدا ڪندو:

    public class Animal {
    
       public void speak(String s) {
    
           System.out.println("Hello! " + s);
       }
    }
    
    public class Cat extends Animal {
    
       @Override // Error!
       public void speak() {
           System.out.println("Meow!");
       }
    }

  2. ختم ٿيل طريقو لازمي طور تي ساڳيو واپسي جو قسم هجڻ گهرجي جيئن والدين طريقي سان.

    ٻي صورت ۾، اسان کي گڏ ڪرڻ جي غلطي ملندي:

    public class Animal {
    
       public void speak() {
    
           System.out.println("Hello!");
       }
    }
    
    
    public class Cat extends Animal {
    
       @Override
       public String speak() {         // Error!
           System.out.println("Meow!");
           return "Meow!";
       }
    }

  3. اوور رائڊ ٿيل طريقي تي رسائي موڊيفائر پڻ ساڳيو ئي هجڻ گهرجي 'اصل' طريقو:

    public class Animal {
    
          public void speak() {
    
                System.out.println("Hello!");
          }
    }
    
    public class Cat extends Animal {
    
           @Override
           private void speak() {      // Error!
               System.out.println("Meow!");
           }
    }
جاوا ۾ اوور رائڊنگ جو طريقو پوليمورفيزم کي لاڳو ڪرڻ جو هڪ طريقو آهي (OOP جو اصول جيڪو اسان گذريل سبق ۾ بيان ڪيو آهي). هن جو مطلب اهو آهي ته ان جو بنيادي فائدو ساڳيو لچڪ آهي جنهن تي اسان اڳ ۾ بحث ڪيو آهي. اسان طبقن جو ھڪڙو سادو ۽ منطقي نظام ٺاھي سگھون ٿا، ھر ھڪ وٽ ھڪڙو مخصوص رويو آھي (ڪتن جي ڀنڪ، ٻليون ميو)، ھڪڙي عام انٽرفيس سان- انھن سڀني لاءِ ھڪ واحد اسپيڪ() طريقو، مثال طور ڪتو اسپيڪ() ، اسپيڪ ڪيٽ. () وغيره.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION