2009-06-24 17 views

cevap

2

Kısa cevap: evet

Ben Java Language Specification kesin bölümünü bulmak mümkün değildi. Lütfen yardım et. :)

+0

kuralı uygulandığında, herhangi bir tehlikeli durum var mı? –

+3

Başka bir kısa cevap: Hayır. –

+0

@Joao: Java statik değiştiricisi tam olarak "derleme zamanında" anlamına gelir. Yöntem/değişken, sınıf adına statik olarak bağlanır. İstisna yok. – dfa

4

Evet, ancak statik yöntem çalışma zamanı tarafından kaldırılmışsa, temel sınıftaki eşleşen yöntem çağrılır (ad ve imza, derleme süresinden itibaren orijinal yöntemle tam olarak eşleşmelidir ve yönteme JVM tarafından erişilebilir olmalıdır) spec kuralları).

Derived.fn(); 

Ve aşağıdaki denilen kod:

class Base { 
    public static void fn() { 
     System.err.println("Base"); 
    } 
} 
class Derived extends Base { 
    public static void fn() { 
     System.err.println("Derived"); 
    } 
} 

Baskı Derived

düşünün çağıran kodu netleştirmek için.

Şimdi her şeyi derledim.

class Derived extends Base { 
} 

Baskı Base: Sonra sadece Türetilmiş yeniden derlemek için değiştirildi.

class Derived { 
} 

bir hata Atar: Belki o zaman sadece Türetilmiş yeniden derlemek

olarak değiştirildi.

+2

"Çalışma zamanı tarafından kaldırıldı"? Bu ne anlama geliyor? –

+0

Bunun anlamı: eğer bir sınıf Sub.x() çağırmak için derlenmişse, o zaman x() yöntemi Sub'dan silinir fakat arayan sınıfı tekrar derlenmez, çalışma zamanında Base.x() eğer çağrılırsa var. – erickson

+0

+1 muhtemelen bu soruya doğru bir yaklaşım – dfa

8

Çeşitli tırnak: derleyici o kesin yöntem her statik yöntem çağrısı (yani statik olmayan yönteme büyük bir fark var çağrıları için çağrılır derleme zamanında karar o sınıfı derlediğinde

": Kesin bir yöntem olduğu çağrılan sadece bu durumlarda çalışma zamanında karar verilir. "

"Statik yöntemlerin çağrılması, yalnızca çağrıldığı derleme zamanı türüne bağlıdır."

+0

Soru için doğru yanıt, ancak yalnızca çalışma zamanında karar verilen statik olmayan yöntemlerle ilgili alıntı yanlıştır. Çalışma zamanında yalnızca geçersiz kılınan yöntemlere karar verilir, diğerleri de dahil olmak üzere derleme zamanında belirlenir. – Robin

+0

@Robin: alıntı benim değil, iyi bir nokta olsa :) –

+0

Bağlantı ölü gibi görünüyor –