CodeGym /جاوا بلاگ /Random-UR /جاوا میں لاگو
John Squirrels
سطح
San Francisco

جاوا میں لاگو

گروپ میں شائع ہوا۔
جب کچھ وراثت کے جاوا او او پی پیراڈائم کے بارے میں بات کرتے ہیں، تو ان کا عام طور پر مطلب یہ ہوتا ہے کہ والدین کی کلاس کو وارث کے ساتھ بڑھانا، چائلڈ کلاس۔ تاہم جب آپ جاوا کے نفاذ کے مطلوبہ الفاظ کو دیکھتے ہیں، تو اس کا مطلب ہے کہ ہم تجرید کی ایک اور سطح پر چلے جاتے ہیں اور جاوا میں انٹرفیس کے ساتھ کام کرنا شروع کر دیتے ہیں۔ ہم اس بارے میں بات کرنے جا رہے ہیں کہ انٹرفیس کیا ہیں، وہ کس کے لیے ہیں، عمل درآمد کیسے ہوتا ہے۔

انٹرفیس اور عمل درآمد کیا ہے؟

آپ نے شاید کئی بار لفظ "انٹرفیس" سنا ہوگا۔ مثال کے طور پر، کمپیوٹر میں ایک ان پٹ انٹرفیس (ماؤس اور کی بورڈ) ہوتا ہے، بہت سے پروگراموں میں یوزر انٹرفیس ہوتے ہیں۔ وسیع تر معنوں میں، ایک انٹرفیس دو بات چیت کرنے والی جماعتوں کے درمیان ایک ربط ہے۔ مثال کے طور پر، وہی کی بورڈ یا TV ریموٹ کنٹرول۔ پروگرامنگ میں، اور خاص طور پر جاوا میں، ایک انٹرفیس ایک مخصوص معاہدہ ہے جو کہتا ہے کہ جو کلاس اسے نافذ کرتی ہے وہ کیا کرے گی۔ ایک انٹرفیس صرف رویے کی وضاحت کرتا ہے۔ یہ اس چیز کے بارے میں کچھ نہیں کہتا جو اسے نافذ کرے گا۔ آپ جاوا میں انٹرفیس کا اعلان اس طرح کر سکتے ہیں:
public interface MyInterface  {

     // constants declaration
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
یہاں جاوا میں نفاذ کا ایک نحو ہے :
public class MyClass implements MyInterface{
//implementing the methods of MyInterface
//Other code
}
ایک انٹرفیس رویے کو بیان کیے بغیر بیان کرتا ہے۔ مثال کے طور پر، "حرکت" جیسے رویے کو مختلف قسم کی اشیاء پر لاگو کیا جا سکتا ہے: ایک سائیکل، ایک شخص، ایک کار، دریا میں پانی، وغیرہ۔ تیراکی کا رویہ بطخ، جہاز یا مچھلی کا رویہ ہو سکتا ہے۔ ان اشیاء میں اس کے علاوہ کوئی چیز مشترک نہیں ہے کہ وہ حرکت کر سکیں یا تیر سکیں۔ جی ہاں، اور تیراکی کے ساتھ بہت تحریک وہ بہت مختلف ہیں. تاہم، جاوا میں آپ Duck , Boat , Fish کی کلاسیں بنا سکتے ہیں اور انہیں تیراکی کی صلاحیت کو نافذ کرنے دیں۔ یہ وہ جگہ ہے جہاں Java Implements کلیدی لفظ استعمال ہوتا ہے۔

مطلوبہ الفاظ کی مثال کو نافذ کریں۔

public interface Swimmable {

   void moveForward();
   void TurnRight();
   void TurnLeft();

}
جیسا کہ آپ دیکھ سکتے ہیں، طریقوں کو خود لاگو نہیں کیا جاتا ہے. لیکن ہم نے اعلان کیا کہ اس انٹرفیس کو نافذ کرنے والی کلاسز کو سیدھی لائن میں تیرنے کے ساتھ ساتھ دائیں اور بائیں مڑنے کے قابل ہونا چاہیے۔ آئیے ایسی کلاسز بنائیں جو اس انٹرفیس کو نافذ کریں گی۔
public class Duck implements Swimmable {
//implementing the methods
   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

}

public class Fish implements Swimmable {

   public void moveForward() {
       System.out.println("I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft() {
       System.out.println("I am turning left...");
   }

   public void turnUp(){
       System.out.println("I am turning up...");
   }

   public void turnDown(){
       System.out.println("I am turning down...");
   }

   public void Stop() {
       System.out.println("I am relaxing somewhere under the water surface...");
   }
}
تمام کلاسز جو تیرنے کے قابل انٹرفیس کو لاگو کرتے ہیں، معاہدے کے مطابق، انہیں آگے تیرنے کے قابل ہونا چاہیے ( moveForward() طریقہ کو نافذ کریں، اور ساتھ ہی دائیں اور بائیں مڑیں۔ ان طریقوں پر عمل درآمد کی ضرورت ہے۔ ایک بطخ اور مچھلی مختلف طریقے سے تیرتے ہیں۔ ہم کہتے ہیں کہ مچھلی کے پاس دو اضافی طریقے ہیں جو اس کی اوپر اور نیچے تیرنے کی صلاحیت کو نافذ کرتے ہیں۔ تیرنے کے قابل انٹرفیس میں یہ نہیں ہے۔ تاہم اگر ہم مچھلی کے طبقے کا بچہ بنائیں، مثال کے طور پر، ٹونا یا سالمن، تو وہ، ہر "مچھلی" کی طرح، اوپر اور نیچے تیرنے کے قابل ہو جائیں گے۔

جاوا میں ایک سے زیادہ انٹرفیس

جیسا کہ آپ شاید پہلے ہی جانتے ہیں، جاوا متعدد وراثت کی حمایت نہیں کرتا ہے۔ اس کا مطلب یہ ہے کہ ایک کلاس صرف ایک سپر کلاس سے وراثت میں مل سکتی ہے۔ تاہم ایک طرح سے آپ جاوا میں اب بھی "متعدد وراثت" استعمال کر سکتے ہیں، کیونکہ ایک کلاس متعدد انٹرفیس کو نافذ کر سکتی ہے۔
To implement multiple interfaces, use the next syntax:
interface MyFirstInterface {
   public void myMethod();
}
interface MySecondInterface {
   public void myOtherMethod();
}

// MyClass implements both MyFirstInterface and MySecondInterface
class MyClass implements MyFirstInterface, MySecondInterface {
   public void myMethod() {
      //method implementation
   }
   public void myOtherMethod() {
     //method implementation
   }
}

متعدد انٹرفیس کی مثال

یاد رکھیں کہ بطخ نہ صرف تیر سکتی ہے بلکہ اڑ بھی سکتی ہے۔ آئیے فلائٹ انٹرفیس لکھیں اور اسے اپنی بطخ میں لاگو کریں۔
public interface Flyable {
   double startAge = 0.1;
   void fly();
}

public class Duck implements Swimmable, Flyable {

   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

   public void fly(){
       System.out.println("I am flying!!!");
   }

}
اور پھر، یہ یاد رکھنا ضروری ہے کہ ہم انٹرفیس کیوں لکھ رہے ہیں۔ ہم کہتے ہیں کہ اگر اسے پرندے، ہوائی جہاز، اسکائی ڈائیور اور ایک ڈینڈیلین کے ذریعے لاگو کیا جائے تو ان کی پروازیں بالکل مختلف ہوں گی۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION