CodeGym /Java Blogu /Rastgele /Java'da uygular
John Squirrels
Seviye
San Francisco

Java'da uygular

grupta yayınlandı
Bazıları Java OOP kalıtım paradigması hakkında konuşurken, genellikle bir üst sınıfı bir mirasçı, bir alt sınıf ile genişletmek anlamına gelir. Ancak Java implements anahtar kelimesiyle karşılaştığınızda, bu, başka bir soyutlama düzeyine geçtiğimiz ve Java'da Arayüzler ile çalışmaya başladığımız anlamına gelir. Arayüzlerin ne olduğundan, ne işe yaradığından, implementasyonun nasıl gerçekleştiğinden bahsedeceğiz.

Arayüz ve uygulama nedir?

Muhtemelen "arayüz" kelimesini birçok kez duymuşsunuzdur. Örneğin, bir bilgisayarın bir giriş arabirimi (fare ve klavye) vardır, birçok programın kullanıcı arabirimleri vardır. En geniş anlamda, bir arayüz, etkileşimde bulunan iki taraf arasındaki bir bağlantıdır. Örneğin, aynı klavye veya TV uzaktan kumandası. Programlamada ve özellikle Java'da arayüz, onu uygulayan sınıfın ne yapacağını söyleyen özel bir sözleşmedir. Bir arayüz yalnızca davranışı tanımlar. Onu uygulayacak nesne hakkında hiçbir şey söylemez. Java'da bir arabirimi şu şekilde bildirebilirsiniz:

public interface MyInterface  {

     // constants declaration 
     // methods without implementation
     // static methods
     // default methods (default)
     // private methods
}
İşte Java'daki Uygulamaların bir sözdizimi:

public class MyClass implements MyInterface{
//implementing the methods of MyInterface 
//Other code
} 
Arayüz davranışı belirtmeden tanımlar. Örneğin, "hareket" gibi bir davranış farklı nesne türlerine uygulanabilir: bisiklet, insan, araba, nehirdeki su vb. Yüzme davranışı bir ördeğin, bir geminin veya bir balığın davranışı olabilir. Bu nesnelerin hareket edebilmeleri veya yüzebilmeleri dışında hiçbir ortak noktaları yoktur. Evet ve yüzme ile hareket çok farklı. Bununla birlikte, Java'da Duck , Boat , Fish sınıfları oluşturabilir ve yüzme becerisini uygulamalarına izin verebilirsiniz. Java Applys anahtar sözcüğünün kullanıldığı yer burasıdır .

Anahtar kelime örneğini uygulama


public interface Swimmable {
  
   void moveForward();
   void TurnRight();
   void TurnLeft();
  
}
Gördüğünüz gibi, yöntemlerin kendisi uygulanmadı. Fakat bu arayüzü uygulayan sınıfların düz bir çizgide yüzebilmesinin yanı sıra sağa ve sola dönebilmesi gerektiğini beyan ettik. Bu arayüzü uygulayacak sınıflar oluşturalım.

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...");
   }
}
Sözleşmeye göre Swimmable arabirimini uygulayan tüm sınıflar ileri yüzebilmeli (moveForward () yöntemini uygulayabilmeli) ve ayrıca sağa ve sola dönebilmelidir. Bu yöntemlerin uygulanması zorunludur. Bir ördek ve bir balık farklı yüzer. Diyelim ki bir balığın yukarı ve aşağı yüzme yeteneğini uygulayan iki ek yöntemi var. Swimmable arayüzünde buna sahip değil. Ancak, Balık sınıfından bir çocuk yaratırsak, örneğin, Ton Balığı veya Somon, her "Balık" gibi, yukarı ve aşağı yüzebileceklerdir.

Java'da Çoklu Arayüzler

Muhtemelen zaten bildiğiniz gibi, Java çoklu kalıtımı desteklemez. Bu, bir sınıfın yalnızca bir üst sınıftan miras alınabileceği anlamına gelir. Ancak bir şekilde Java'da "çoklu kalıtımı" kullanabilirsiniz, çünkü bir sınıf birden çok arabirim uygulayabilir.

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
   }
}

Çoklu Arayüz Örneği

Bir ördeğin sadece yüzemeyeceğini, aynı zamanda uçabileceğini de unutmayın. Uçuş arayüzünü yazalım ve ördeğimizde uygulayalım.

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

}
Ve yine, arayüzü neden yazdığımızı hatırlamak önemlidir. Diyelim ki bir kuş, bir uçak, bir skydiver ve bir karahindiba tarafından uygulanırsa uçuşları tamamen farklı olacaktır.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION