CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ مثال ۽ وراثت
John Squirrels
سطح
San Francisco

جاوا ۾ مثال ۽ وراثت

گروپ ۾ شايع ٿيل
سلام پوئين سبق ۾، اسان اڳ ۾ ئي مختصر طور تي وراثت جي تصور سان واقف ٿي چڪا آهيون. اڄ، اسان هن موضوع تي ٻيهر رابطو ڪنداسين، پر ٻيهر تمام گهڻي نه. اسان اڃا تائين اڳتي وڌڻ وارا آهيون انهي تي وڌيڪ تفصيلي سبق مستقبل ۾. اڄ اسان صرف چند عملي مثالن تي تڪڙو نظر وجهنداسين ۽ جاوا ۾ هڪ دلچسپ آپريٽر سان واقف ٿينداسين.

وراثت

پوء، وراثت ڇا آهي؟ مثال ۽ وراثت 101 - 1 وراثت هڪ پروگرامنگ ميکانيزم آهي (جنهن ۾ جاوا شامل آهي) جيڪا توهان کي موجوده هڪ جي بنياد تي نئين طبقي جو اعلان ڪرڻ جي اجازت ڏئي ٿي. نڪتل طبقو وري والدين طبقي جي شعبن ۽ طريقن تائين رسائي حاصل ڪري ٿو. اسان کي اها ضرورت ڇو پوندي؟ خير، تصور ڪريو ته توهان کي هڪ پروگرام ۾ ڪار جا ڪيترائي ڪلاس ٺاهڻ گهرجن: ٽرڪ، ريس ڪار، سيڊان، پڪ اپ وغيره. ڪو به ڪوڊ لکڻ کان اڳ، توهان پڪ ڄاڻو ٿا ته انهن سڀني طبقن ۾ تمام گهڻو مشترڪ آهي: سڀني ڪارن جو هڪ ماڊل آهي. نالو، ٺاھڻ جو سال، انجڻ جي سائيز، وڌ ۾ وڌ رفتار، وغيره. هن صورتحال ۾، توهان ڪري سگهو ٿا:
  • انهن شعبن کي هر ڪلاس ۾ ٺاهيو (انهن کي هر نئين ڪار ڪلاس ۾ شامل ڪريو جيئن توهان ان کي ٺاهيو)
  • سڀني ڪارن لاءِ عام شعبن کي پيرن ڪلاس ۾ آڻيو ، ۽ پوءِ ڪلاس مان مخصوص قسم جي ڪارن لاءِ سڀني ڪلاسن کي حاصل ڪرڻ لاءِ Carلفظ ExtensionsCar استعمال ڪريو .
قدرتي طور، ٻيو اختيار گهڻو وڌيڪ آسان آهي:
public class Car {

   private String model;
   private int maxSpeed;
   private int yearOfManufacture;

   public Car(String model, int maxSpeed, int yearOfManufacture) {
       this.model = model;
       this.maxSpeed = maxSpeed;
       this.yearOfManufacture = yearOfManufacture;
   }
}

public class Truck extends Car {

   public Truck(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}

public class Sedan extends Car {
   public Sedan(String model, int maxSpeed, int yearOfManufacture) {
       super(model, maxSpeed, yearOfManufacture);
   }
}
گهٽ ۾ گهٽ، اسان ڪوڊ جي غير ضروري نقل کان پاسو ڪندا آهيون (۽ اسان کي هميشه ڪوشش ڪرڻ گهرجي جڏهن پروگرام لکندا). ان سان گڏ، اسان وٽ ھڪڙو سادو ۽ سمجھڻ وارو طبقاتي ڍانچو آھي، سڀني شعبن سان گڏ ھڪڙي طبقي ۾ سڀني ڪارن لاءِ گڏيل آھي. جيڪڏهن ٽرڪن ۾ ڪي خاص شعبا آهن جيڪي ٻيون ڪارون نه آهن، انهن کي ڪلاس ۾ قرار ڏئي سگهجي ٿو Truck. ساڳيو ئي طريقن لاء وڃي ٿو. Carسڀني ڪارن ۾ ڪجهه عام رويا هوندا آهن جن کي طريقن سان بيان ڪري سگهجي ٿو، مثال طور ڪار کي شروع ڪرڻ، تيز ڪرڻ/بريڪ، وغيره. اهي عام طريقا پيرن ڪلاس ۾ گڏ ڪري سگهجن ٿا، ۽ هر مخصوص قسم جي ڪار پنهنجي نڪتل طبقن ۾ پنهنجي منفرد عملن جي وضاحت ڪري سگهي ٿي. .
public class Car {

   public void gas() {
       // Accelerate
   }

   public void brake() {
       // Brake
   }
}


public class F1Car extends Car {

   public void pitStop() {

       // Only race cars make pit stops
   }

   public static void main(String[] args) {

       F1Car formula1Car = new F1Car();
       formula1Car.gas();
       formula1Car.pitStop();
       formula1Car.brake();
   }
}
اسان ڪلاس ۾ سڀني ڪارن لاءِ عام طريقا شامل ڪيا Car. پر، F1Carڪلاس کي ڏسو، جيڪو نمائندگي ڪري ٿو "فارمولا 1" ريس ڪارن. پٽي اسٽاپ (اسٽاپ فوري ڪار جي سار سنڀال لاءِ) صرف ريس ۾ ڪيا ويندا آهن، تنهنڪري اسان هن مخصوص ڪارڪردگي کي لاڳاپيل نڪتل طبقي ۾ شامل ڪيو. مثال ۽ وراثت 101 - 2

آپريٽر جو مثال

جاوا ۾، اتي ھڪڙو خاص آپريٽر آھي، مثال طور ، چيڪ ڪرڻ لاءِ ته ڇا ھڪڙو اعتراض ھڪڙي خاص طبقي جي بنياد تي ٺاھيو ويو آھي. اهو واپسي صحيح يا غلط چيڪ جي نتيجي تي منحصر ڪري ٿو. اچو ته ڏسو ته اهو ڪيئن ڪم ڪري ٿو اسان جي ڪار ۾ ڪلاس استعمال ڪندي مثال:
public class Truck extends Car {

   public static void main(String[] args) {

       Truck truck = new Truck();
       System.out.println(truck instanceof Car);
   }
}
ٻاھر نڪتو: سچو آپريٽر سچوinstanceof موٽندو آھي ، ڇو ته اسان وٽ ھڪڙو اعتراض آھي، ۽ سڀ ٽرڪون ڪارون آھن. طبقو ڪلاس مان نڪتل آهي . سڀئي ٽرڪون عام والدين، طبقي جي بنياد تي ٺاهيا ويا آهن. ويجهي ڏسو ته ڪيئن آپريٽر استعمال ڪيو ويندو آهي. توھان ان کي بغير مدت جي لکو، ڇو ته اھو ھڪڙو آپريٽر آھي، ھڪڙو طريقو نه آھي ("Object instance of Class"). اچو ته ٻيو طريقو آزمايون: TruckTruckCarCarinstanceof
public static void main(String[] args) {

   Car car = new Car();
   System.out.println(car instanceof Truck);
}
ٻاھر نڪتو: غلط ڪلاس Car(۽ ڪار شيون) ڪلاس مان نڪتل نه آھي Truck. سڀئي ٽرڪون ڪارون آهن، پر سڀئي ڪارون ٽرڪون نه آهن. Carشيون طبقي تي ٻڌل نه آهن Truck. هڪ وڌيڪ مثال:
public static void main(String[] args) {

   Car car = new Car();
   Truck truck = new Truck();
   System.out.println(car instanceof Object && truck instanceof Object);
}
Output: True هتي منطق به سادو آهي: جاوا ۾ سڀئي ڪلاس، بشمول اهي ڪلاس جيڪي توهان ٺاهيندا آهيو، ڪلاس مان نڪرندا آهن Object(جيتوڻيڪ توهان نه لکندا آهيو "Extends Object" - اهو اڳ ۾ ئي لاڳو آهي). اهو ڪيئن ۽ ڪڏهن مفيد ٿيندو؟ آپريٽر instanceofسڀ کان عام طور تي استعمال ڪيو ويندو آھي جڏھن equals()طريقي کي ختم ڪرڻ. مثال طور، ھتي آھي ڪيئن equalsطريقو ڪلاس ۾ لاڳو ڪيو ويو آھي String:
public boolean equals(Object anObject) {
   if (this == anObject) {
       return true;
   }
   if (anObject instanceof String) {
       String anotherString = (String) anObject;
       int n = value.length;
       if (n == anotherString.value.length) {
           char v1[] = value;
           char v2[] = anotherString.value;
           int i = 0;
           while (n-- != 0) {
               if (v1[i] != v2[i])
                       return false;
               i++;
           }
           return true;
       }
   }
   return false;
}
پاس ڪيل شئي سان ڀيٽ ڪرڻ کان اڳ String، طريقو جانچي ٿو ته ڇا اعتراض هڪ تار به آهي؟ صرف ان کان پوء اهو شروع ٿئي ٿو ٻن شين جي خاصيتن جو مقابلو ڪرڻ. جيڪڏهن هي امتحان موجود نه هجي ها، ڪنهن به شئي کي قدر ۽ ڊگھائي شعبن سان گڏ طريقي سان منتقل ڪري سگهجي ٿو ۽ هڪ اسٽرنگ سان مقابلو ڪري سگهجي ٿو، جيڪو غلط هوندو، يقيناً.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION