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

جاوا ۾ انٽرفيس

گروپ ۾ شايع ٿيل
جئين توهان ڄاڻو ٿا، جاوا ۾ هر شيء تي مشتمل آهي شيون، ۽ شيون آهن رياست (فيلڊز) ۽ رويي (طريقي سان بيان ڪيل). هڪ طبقي جو رويو اهو آهي جيڪو ان کي ٻين طبقن سان جڙي سگهي ٿو. رويي ۾ مختلف خاصيتون ٿي سگهن ٿيون، ۽ ڪڏهن ڪڏهن اهو وڌيڪ آسان ٿي سگهي ٿو ان کي ڪلاس کان ٻاهر منتقل ڪرڻ، خاص طور تي جڏهن اهو ٻاهرئين دنيا سان لهه وچڙ ۾ اچي ٿو. جيئن ته ٽي وي جو ريموٽ ڪنٽرول "باڪس" کان ٻاهر آهي. ريموٽ ڪنٽرول هڪ انٽرفيس آهي صارف جي رابطي لاءِ ٽي وي افعال سان. مثال طور، توهان تصور ڪري سگهو ٿا هڪ ڪلاس جيڪو هڪ خلاصو هوائي جهاز يا هيلي ڪاپٽر لاڳو ڪري ٿو. ٻنهي طبقن جون شيون جهڙوڪ گھڻا پکي اُڏامي سگهن ٿا، ۽ اُهي سڀ مختلف طريقي سان ڪن ٿا. ٿي سگهي ٿو ته هن خصوصيت کي هڪ الڳ ادارو ۾ منتقل ڪرڻ جي قابل آهي، ۽ سڀ امڪاني "flyers" هن اداري مان ورثي ۾ ڪيو ويندو؟ جيڪڏهن توهان تجريدي طبقن کان پهريان ئي واقف آهيو، ته توهان صرف هڪ خلاصو ڪلاس ٺاهي سگهو ٿا Flyable ۽ "وراثت" Copter ۽ Plane ڪلاس ان مان. تنهن هوندي، ڇا جيڪڏهن اهڙا ڪيترائي خاصيتون آهن؟ مثال طور، هوائي جهاز ۽ هيلي ڪاپٽر اڏامي سگهن ٿا، پر زمين تي پڻ سفر ڪري سگهن ٿا. جيتوڻيڪ اسان سواري ڪلاس ٺاهي سگهون ٿا، اسان ان کي ڪوپٽر ۽ جهاز مقرر نه ڪري سگهون ٿا. آخرڪار، هر جاوا ڪلاس صرف هڪ والدين ڪلاس آهي. جاوا ۾ انٽرفيس - 1جاوا ٻوليءَ ۾ انٽرفيس استعمال ڪرڻ جزوي طور ھي مسئلو حل ڪري ٿو. جاوا ۾ انٽرفيس ڪجهه ڪارڪردگي جي وضاحت ڪن ٿا جن ۾ ڪو خاص عمل نه آهي، جنهن کي پوءِ لاڳو ڪيو وڃي ٿو طبقن طرفان جيڪي اهي انٽرفيس استعمال ڪن ٿا. ۽ ھڪڙو طبقو ڪيترن ئي انٽرفيس کي لاڳو ڪري سگھي ٿو. حقيقت ۾، جاوا ۾ هڪ انٽرفيس کي لاڳو ڪرڻ سان، اسان اعلان ڪريون ٿا ته اسان جو طبقو ڪجهه ڪري سگهي ٿو، اسان ان جي رويي جي رپورٽ ڪندا آهيون. اسان اڳ ۾ ئي ڪلاس ۾ رويي جي ڪنڪريٽ تي عمل درآمد ڪندا آهيون. سو. هڪ هوائي جهاز ۽ هڪ هيلي ڪاپٽر مختلف طور تي بند ڪري ٿو: هڪ هوائي جهاز کي رن وي جي ضرورت آهي، جڏهن ته هيلي ڪاپٽر عام طور تي عمدي طور تي کڻندو آهي. اهڙيون تفصيلون بهترين طور تي ڪلاس ۾ لاڳو ٿين ٿيون.

جاوا ۾ انٽرفيس

جاوا ٻولي ۾ انٽرفيس جي وضاحت ڪرڻ لاءِ، انٽرفيس لفظ استعمال ڪيو ويندو آھي. مثال طور:
interface Voice {

    void talk();
}
مٿي ڏنل انٽرفيس کي وائس چئبو آهي . جاوا ۾ هڪ انٽرفيس ثابت ڪري سگهي ٿو ۽ طريقن جو تعين ڪري سگھي ٿو، جن تي عملدرآمد ٿي سگھي ٿو يا نه. عام طور تي، انٽرفيس طريقن تي عمل نه آهي، جهڙوڪ هن مثال ۾. انٽرفيس ۾ طريقن تي عمل ڪرڻ کان سواءِ تجريدي طبقن جا تجريدي طريقا آهن. انٽرفيس طريقن ۾ عام طور تي رسائي موڊيفائرز نه هوندا آهن. جيتوڻيڪ رسائي اصل ۾ ڊفالٽ طور عوامي آهي ڇو ته هڪ انٽرفيس جو مقصد هڪ طبقي جي عمل درآمد لاء ڪارڪردگي کي بيان ڪرڻ آهي. تنهن ڪري، سڀني ڪارڪردگي کي لاڳو ڪرڻ لاء کليل هجڻ گهرجي. هڪ انٽرفيس کي لاڳو ڪرڻ لاءِ، پنهنجي ڪلاس جو اعلان ڪندي لاڳو لفظ استعمال ڪريو. ان کان علاوه، جيڪڏهن هڪ انٽرفيس هڪ طريقو آهي جنهن تي عمل درآمد ناهي، پوء اهو طريقو لاڳو ڪرڻ واري طبقي ۾ لاڳو ڪيو وڃي.
public class Duck implements Voice {


@Override
public void voice() {
   System.out.println("Quack");
}


    }

انٽرفيس ڪوڊ جو مثال

اچو ته هڪ وڌيڪ مڪمل مثال وٺو. هر (چڱو، لڳ ڀڳ هر) جانور آواز ڪرڻ جي صلاحيت رکي ٿو. اچو ته هن ڪيس لاءِ جاوا انٽرفيس وائس ٺاهيو. ان ۾ هڪ Talk() طريقو آهي جنهن تي عمل درآمد ناهي.
public interface Voice {
   void talk();
}
ھاڻي سڀئي ڪلاس جيڪي وائس انٽرفيس کي سپورٽ ڪن ٿا انھن کي ٽاڪ() ميٿڊ تي عمل ڪرڻ گھرجي . اچو ته ٻه طبقا ٺاهيون - ٻلي ۽ ڪتو ۽ ظاهر ڪريو ته اهي وائس انٽرفيس کي لاڳو ڪن ٿا. انهي صورت ۾، جيڪڏهن توهان ان ۾ هڪ ڪلاس لاڳو نه ڪندا، پروگرام ڪم نه ڪندو. لاڳو ڪرڻ جا طريقا بلڪل سادو آهن. جڏهن ٻلي ڪلاس جي ڪنهن شئي جي Talk() طريقي کي سڏيندي ، هڪ ميائو جي برابر متن اسڪرين تي ڏيکاريو ويندو، ڪتي طبقي جي صورت ۾، هڪ ڇڪ. اسان ڪلاس ۾ حاصل ڪندڙ، سيٽرز ۽ هڪ تعمير ڪندڙ پڻ شامل ڪنداسين.
public class Cat implements Voice {
   String name;
   String breed;
   int year;

   public Cat(String name, String breed, int year) {
       this.name = name;
       this.breed = breed;
       this.year = year;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getBreed() {
       return breed;
   }

   public void setBreed(String breed) {
       this.breed = breed;
   }

   public int getYear() {
       return year;
   }

   public void setYear(int year) {
       this.year = year;
   }

   @Override
   public void talk() {
       System.out.println("meow...");
   }
}
public class Dog implements Voice {
   String name;
   String color;
   int year;

   public Dog(String name, String color, int year) {
       this.name = name;
       this.color = color;
       this.year = year;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getColor() {
       return color;
   }

   public void setColor(String color) {
       this.color = color;
   }

   public int getYear() {
       return year;
   }

   public void setYear(int year) {
       this.year = year;
   }

   @Override
   public void talk() {
       System.out.println("WOF WOF");
   }
}
حقيقت ۾، اسان جا طبقا ۽ طريقا لاڳو ڪرڻ بلڪل ساڳيا آهن. اچو ته هڪ ٻيو ڪلاس ٺاهيو، Parrot ، آواز جي مدد سان. صرف Talk() طريقو ان ۾ مختلف طرح سان ڪم ڪندو: استعمال ڪندڙ ڪنسول ۾ اسٽرنگ داخل ڪندو، ۽ طوطا Talk () طريقو استعمال ڪندي ان کي ”ورجائي“ ڪندو.
import java.util.Scanner;

public class Parrot implements Voice {
   String name;
   String color;
   int year;

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getColor() {
       return color;
   }

   public void setColor(String color) {
       this.color = color;
   }

   public int getYear() {
       return year;
   }

   public void setYear(int year) {
       this.year = year;
   }

   @Override
   public void talk() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}
ھاڻي اچو ته ھڪ ٽيسٽ ڪلاس ٺاھيون ۽ ڏسون ته پروگرام جو نتيجو ڪھڙو نڪرندو جيڪڏھن اسان ٽاڪ () ميٿڊ کي ڪال ڪري Cat , Dog ۽ Parrot ڪلاس جي شين جي بدلي ۾.
public class InterfaceDemo {
   public static void main(String[] args) {
       Cat cat = new Cat ("Mewie", "Siam" ,2021);
       cat.talk();
       Dog dog = new Dog("Snoopy", "White and black", 2020);
       dog.talk();
       Parrot parrot = new Parrot();
       parrot.talk();
   }
}
پيداوار هيٺ ڏنل آهي. سائو متن ھڪڙو صارف آھي جيڪو ڪنسول ۾ ڇپيل آھي.
meow... WOF WOF مان توکان پوءِ ڇا ٿو ورجائي؟... مان ڏاڍو ڳالهائيندڙ ۽ چالاڪ پکي آهيان مان ڏاڍو ڳالهائيندڙ ۽ چالاڪ پکي آهيان.

ڊفالٽ طريقا

JDK 8 ڇڏڻ کان اڳ جڏهن جاوا ۾ هڪ انٽرفيس کي لاڳو ڪرڻ، اسان کي ان جي سڀني طريقن کي لاڳو ڪرڻو پوندو ڪلاس ۾. ساڳئي وقت، جاوا انٽرفيس پاڻ ۾ ٿي سگهي ٿو صرف طريقن جي وضاحتن تي مشتمل هجي بغير ڪنهن خاص عمل جي. JDK 8 نئين ڪارڪردگي شامل ڪري ٿو - ڊفالٽ طريقا. ھاڻي جاوا انٽرفيس ۾ نه رڳو طريقن جون وصفون ٿي سگھن ٿيون پر ڊفالٽ لاڳو ڪرڻ پڻ. اهي استعمال ڪيا ويندا آهن جيڪڏهن ڪلاس انٽرفيس کي لاڳو ڪري ٿو پر طريقو لاڳو نٿو ڪري. مثال طور، اچو ته وائس انٽرفيس ۾ Talk() طريقي کي ڊفالٽ طريقي سان تبديل ڪريون. اسان به لکنداسين هڪ نئون وائيس -ايبلڊ ڊڪ ڪلاس جنهن ۾ ڳالهه ٻولهه جو طريقو لاڳو ناهي .
public interface Voice {
   default void talk() {
       System.out.println("I can talk...");
   }
}
public class Duck implements Voice {

   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!!!");
   }

}
هاڻي اچو ته اسان جي ٽيسٽ ڪلاس کي ٿورو تبديل ڪريون.
public class InterfaceDemo {
   public static void main(String[] args) {
       Cat cat = new Cat ("Mewie", "Siam" ,2021);
       cat.talk();
       Dog dog = new Dog("Snoopy", "White and black", 2020);
       dog.talk();
       Duck duck = new Duck();
       duck.talk();
   }
}
پيداوار هتي آهي:
ميوو... WOF WOF مان ڳالهائي سگهان ٿو...
ڏسو؟ ڪتن ۽ ٻلي جي ڪلاسن ۾ ، اوور رائڊ ميٿڊ ٽاڪ () کي چئبو آھي، پر ڊڪ ڪلاس جي ڪنھن شئي ۾، انٽرفيس مان ڊفالٽ طريقو سڏبو آھي. اهڙيء طرح، ڊفالٽ طريقو صرف هڪ طريقو آهي بغير ڪنهن ترميمن جي ۽ نشان لڳل آهي ڊفالٽ لفظ سان. اسان کي ڪلاس ۾ ڊفالٽ طريقو لاڳو ڪرڻ جي ضرورت ناهي جيڪا انٽرفيس کي لاڳو ڪري ٿي، پر اسان ان کي ختم ڪري سگهون ٿا.

جامد طريقا

جيئن ته JDK 8 جامد طريقا جاوا انٽرفيس ۾ موجود آهن - اهي ڪلاس طريقن سان ملندڙ جلندڙ آهن:
interface Voice {

    void talk();

    static void check(){

        System.out.println("checked...");
    }
}
انٽرفيس جي جامد طريقي ڏانهن اشارو ڪرڻ لاءِ، جيئن ڪلاسن جي صورت ۾، انٽرفيس جو نالو ۽ طريقو لکو:
public static void main(String[] args) {

    Voice.check();
}

انٽرفيس جي گھڻائي لاڳو ڪرڻ

جيڪڏهن اسان کي جاوا ڪلاس ۾ ڪيترن ئي انٽرفيس کي لاڳو ڪرڻ جي ضرورت آهي، ته اهي سڀئي لفظ لاڳو ڪرڻ کان پوء ڪاما سان درج ٿيل آهن :
public class Duck implements Swimmable, Flyable, Voice {

    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