• 31-05-2013, 23:24:53
    #1
    Arkadaşlar java 'da interface ile class arasındaki fark nedir? Ben pek bir fark göremedim ikisinin de kullanımı aynı.
  • 31-05-2013, 23:46:52
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    PHP'yi baz alarak açıklayayım ben. JAVA'da da aynıdır sanıyorum.

    "Interface"ler belirli kalıplar oluşturmanızı sağlar. Bu kalıplara sahip de "class"lar oluşturursunuz. Yani arayüzler sınıflarınızın çerçevesini oluşturur. O arayüzden sınıf tanımlarken (PHP'de "implements" komutu ile yapılıyor) sadece çerçevenin içine resimi yerleştirirsiniz.

    Tek cümle ile ifade etmek gerekirse; "interface"lerle projenize standartlar getirebilirsiniz.
  • 31-05-2013, 23:57:48
    #3
    hocam arada çok fark var.

    ilk olarak interfacelere kod yazamazsın, sadece metod tanımı, property tanımı, indexer ve event tanımlayabilirsin ama içine kod yazamazsın. class larda ise bunu yapabilrsin.

    örnek vermek gerekirse

    public interface IDeneme
    { 
                string Yazdir();
                int Toplam {get; set; }            
                string Isim{get; set; }            
    
    }
    javada getter ve setterler farklı olabilir tam hatırlamıyorum. şimdi Ideneme interfaceinde gördüğün gibi sadece metodun ismi yazılı, gövdesi yazılı değil ve de değişken olarak field değil property yazdık. ama class daha farklı

    public class Deneme
    { 
                string Yazdir()
                {
                   Println(".....");
                }
                int Toplam {get; set; }            
                string Isim{get; set; }            
    
                int Yas;
    
    }
    ikinci önemli fark ise classlarda çoklu kalıtım yok. (javada da böyle olması gerekiyor diye hatırlıyorum)

    mesela

    class A{}
    class B{}

    class C : A,B {} yapamam.... (javada implements kullanılıyor)

    ancak interface çoklu kalıtımı destekler.. örnek

    public interface A {}
    public interface B {}
    public class C: A,B {}

    gördüğün gibi C class ımız A ve B den miras aldı. Bu da demektir zorunlu olarak A ve B de bulunan tüm metodları,propertyleri ... C classında zorunlu olarak barındıracaktır..

    bunla ilgili internette çok örnek bulabilirsin..
  • 01-06-2013, 09:46:05
    #4
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    hocam arada çok fark var.

    ilk olarak interfacelere kod yazamazsın, sadece metod tanımı, property tanımı, indexer ve event tanımlayabilirsin ama içine kod yazamazsın. class larda ise bunu yapabilrsin.

    örnek vermek gerekirse

    public interface IDeneme
    { 
                string Yazdir();
                int Toplam {get; set; }            
                string Isim{get; set; }            
    
    }
    javada getter ve setterler farklı olabilir tam hatırlamıyorum. şimdi Ideneme interfaceinde gördüğün gibi sadece metodun ismi yazılı, gövdesi yazılı değil ve de değişken olarak field değil property yazdık. ama class daha farklı

    public class Deneme
    { 
                string Yazdir()
                {
                   Println(".....");
                }
                int Toplam {get; set; }            
                string Isim{get; set; }            
    
                int Yas;
    
    }
    ikinci önemli fark ise classlarda çoklu kalıtım yok. (javada da böyle olması gerekiyor diye hatırlıyorum)

    mesela

    class A{}
    class B{}

    class C : A,B {} yapamam.... (javada implements kullanılıyor)

    ancak interface çoklu kalıtımı destekler.. örnek

    public interface A {}
    public interface B {}
    public class C: A,B {}

    gördüğün gibi C class ımız A ve B den miras aldı. Bu da demektir zorunlu olarak A ve B de bulunan tüm metodları,propertyleri ... C classında zorunlu olarak barındıracaktır..

    bunla ilgili internette çok örnek bulabilirsin..
    Hocam Abstract sınıf kullanarakda kod yazmadan arayüzün yaptığı işin aynısını yapabiliyorsun. Öyleyse sınıf ile arayüz arasındaki tek farkın ÇOKLU KALITIM mıdır?
  • 01-06-2013, 12:07:44
    #5
    evt çoklu kalıtım ve metodları ezmiyorsun miras verdiğin sınıfta
  • 01-06-2013, 12:15:57
    #6
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    evt çoklu kalıtım ve metodları ezmiyorsun miras verdiğin sınıfta
    Miras verdiğin sınıfta metodları ezebiliyorsun, sadece çoklu kalıtım özelliği yok. Tek fark çoklu kalıtım sanırım.
  • 01-06-2013, 12:26:43
    #7
    hocam interfacede ezmiyorsun, bahsettiğin şey abstract sınıf için geçerli. interfacede her şey zorunlu
  • 01-06-2013, 14:55:59
    #8
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    hocam interfacede ezmiyorsun, bahsettiğin şey abstract sınıf için geçerli. interfacede her şey zorunlu
    Hocam abstract sınıfta da zorunlu. Abstract sınıfta bir abstract metotu mutlaka ezmek gerekiyor yoksa hata veriyor derleyici.
  • 01-06-2013, 15:13:29
    #9
    tamam hocam ezmek zorundasın zaten abstractta, ancak interfacede ezme olayı yok.. ben senin ne dediğini anladım, problem yok