2010-11-15 32 views
8

Olası Çoğalt:
What's “@Override” there for in java?Java - "@Override" ne için kullanılır?

şimdiye kadar bir yönteminden önce "@Override" koymak hiç. Onunla bazı kod örnekleri görüyorum, ancak onun faydasını anlamıyorum. Biraz açıklama isterim.

Çok teşekkürler,

JDelage

+0

java'da [What's "@Override" in kopyası var mı?] (Http://stackoverflow.com/questions/2489974/whats-override-there-for-in-java) –

+0

Sadece netleştirmek için " Bir sınıftan önce @Override "- Bir yöntemi mi kastediyorsunuz? Yoksa aslında bir sınıftaki @Override ek açıklamalarını mı kullanıyorsunuz? –

+0

Ayrıca, http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why –

cevap

6

İlk olarak, @Override ile sınıf'a açıklama ekleyemezsiniz. Bu açıklama, bir yöntem beyanının bir üst sınıftaki bir yöntem bildirimini geçersiz kılmayı amaçladığını belirtir.

Sen geçersiz kılma bir üst sınıf yöntem değildir bu ek açıklama ve açıklamalı yöntemini kullanırsanız yöntemleri ama geçersiz kılma açıklama gerekmez, o zaman derleyici bir hata mesajı oluşturur.

1

Bilindiği gibi, geleneksel bir yorum. Bazı derleyiciler, @Override tarafından takip edilen fonksiyonun gerçekten bir geçersiz kılma olduğundan emin olurlar ... sadece bir failsafe

8

Bir yöntem beyanının bir üst sınıftaki bir yöntem bildirimini geçersiz kılmak için tasarlandığını belirtir. Bir yöntem bu açıklama türüyle açıklamalı, ancak bir üst sınıf yöntemini geçersiz kılmazsa, bir hata iletisi oluşturmak için derleyiciler gereklidir.

http://download.oracle.com/javase/6/docs/api/java/lang/Override.html

Ben equals geçersiz kılmak için onun kullanımıdır açıklamak ister vaka

.

Bu irade hata equals bir Object parametresi bekler çünkü:

public class Foo{ 

    @Override 
    public boolean equals(Foo f){ 
     return true; 
    } 
} 
+0

... Sanırım gerçekten geçersiz kılınmış yöntemler üzerinde atlanabilir. Bence * bazı * ortamlarda bir uyarı üretecek, fakat bir hata değil. – FrustratedWithFormsDesigner

+1

Herhangi bir şeyi geçersiz kılmayan bir yönteme '@ Geçersiz Kıl 'yazdığınızda hata verecektir. Kesinlikle gerekli değildir, ancak derleyicinin size yardımcı olmasına yardımcı olur. – Jeremy

2

Bu yöntem, bir üst sınıf yöntemi geçersiz kılmasını beklediklerini ifade etmek var. Metodun adını yazarken bir hata yaptığınızda ya da yanlış parametreler verdiğinizde, geçersiz kıldığını düşündüğünüz şeyi geçersiz kılmamanız durumunda işe yarar.

5

En iyi örnek - equals()'u geçersiz kılar. Böyle bir sınıf yazarsanız

: o zaman

public class Foo 
{ 
    public String bar; 

    public boolean equals(Foo other) 
    { 
     return this.bar.equals(other.bar); 
    } 
} 

Bunun yerine amaca uygun olarak Object.equals geçersiz kılma yerine, eşittir yöntemi aşırı ettik.

@Override ile eşittir yöntemini ek açıklamalarına eklerseniz, derleyici size bir üst sınıf yöntemini geçersiz kılmadığınıza (doğru bir şekilde) ilişkin bir hata verecektir.

Java 6'da, bu arabirim yöntemlerini uygulamak için de kullanabilirsiniz - bu, yalnızca arabiriminizi tatmin etmek için sınıfınıza bir yöntem eklediğinizde kullanışlıdır ve dolayısıyla derleyici gerekli olduğunu kontrol edebilir ve sizi uyarır. arayüz değişiyor.

Tüm ek açıklamalarda olduğu gibi etkili bir şekilde programatik bir yorumdur, ancak derleyicinin varsayımlarınızın (hala) doğru olduğunu kontrol etmek bu durumlarda çok kullanışlıdır.

İlgili konular